[josm] 03/14: Imported Upstream version 0.0.svn8964+dfsg

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Fri Oct 30 14:40:36 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository josm.

commit 986eb5efac52f71fa0215c4e0fa7459210fb877f
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Fri Oct 30 11:13:28 2015 +0100

    Imported Upstream version 0.0.svn8964+dfsg
---
 .project                                           |    6 +
 .settings/org.eclipse.jdt.core.prefs               |    4 +-
 .settings/org.sonar.ide.eclipse.core.prefs         |    2 +-
 README                                             |    4 +-
 REVISION                                           |    8 +-
 build.xml                                          |    8 +-
 data/defaultpresets.xml                            |  329 ++--
 data/tagging-preset.xsd                            |    2 +
 data/validator/combinations.mapcss                 |   10 +-
 data_nodist/trans/es.lang                          |  Bin 10613 -> 10710 bytes
 data_nodist/trans/fi.lang                          |  Bin 2449 -> 3126 bytes
 i18n/convpreset.pl                                 |    1 +
 i18n/po/af.po                                      |  486 ++++--
 i18n/po/am.po                                      |  486 ++++--
 i18n/po/ar.po                                      |  496 +++---
 i18n/po/ast.po                                     |  545 ++++---
 i18n/po/az.po                                      |  486 ++++--
 i18n/po/be.po                                      |  580 ++++---
 i18n/po/bg.po                                      |  500 +++---
 i18n/po/bn.po                                      |  486 ++++--
 i18n/po/br.po                                      |  486 ++++--
 i18n/po/bs.po                                      |  486 ++++--
 i18n/po/ca.po                                      |  560 ++++---
 i18n/po/ca at valencia.po                             |  542 ++++---
 i18n/po/cs.po                                      |  585 ++++---
 i18n/po/cy.po                                      |  486 ++++--
 i18n/po/da.po                                      | 1257 ++++++++-------
 i18n/po/de.po                                      |  591 +++++---
 i18n/po/de_DE.po                                   |  486 ++++--
 i18n/po/el.po                                      |  551 ++++---
 i18n/po/en_AU.po                                   |  495 +++---
 i18n/po/en_CA.po                                   |  486 ++++--
 i18n/po/en_GB.po                                   |  641 +++++---
 i18n/po/eo.po                                      |  486 ++++--
 i18n/po/es.po                                      |  573 ++++---
 i18n/po/et.po                                      |  500 +++---
 i18n/po/eu.po                                      |  486 ++++--
 i18n/po/fa.po                                      |  486 ++++--
 i18n/po/fi.po                                      |  647 +++++---
 i18n/po/fil.po                                     |  486 ++++--
 i18n/po/fo.po                                      |  486 ++++--
 i18n/po/fr.po                                      | 1027 ++++++++-----
 i18n/po/ga.po                                      |  486 ++++--
 i18n/po/gl.po                                      |  510 ++++---
 i18n/po/he.po                                      |  494 +++---
 i18n/po/hi.po                                      |  486 ++++--
 i18n/po/hr.po                                      |  486 ++++--
 i18n/po/ht.po                                      |  486 ++++--
 i18n/po/hu.po                                      |  579 ++++---
 i18n/po/hy.po                                      |  486 ++++--
 i18n/po/ia.po                                      |  486 ++++--
 i18n/po/id.po                                      |  532 ++++---
 i18n/po/is.po                                      |  494 +++---
 i18n/po/it.po                                      |  551 ++++---
 i18n/po/ja.po                                      |  561 ++++---
 i18n/po/ka.po                                      |  486 ++++--
 i18n/po/km.po                                      |  530 ++++---
 i18n/po/ko.po                                      |  486 ++++--
 i18n/po/ky.po                                      |  486 ++++--
 i18n/po/lo.po                                      |  486 ++++--
 i18n/po/lt.po                                      |  541 ++++---
 i18n/po/lv.po                                      |  486 ++++--
 i18n/po/mk.po                                      |  486 ++++--
 i18n/po/mr.po                                      |  486 ++++--
 i18n/po/ms.po                                      |  486 ++++--
 i18n/po/nb.po                                      |  494 +++---
 i18n/po/nds.po                                     |  486 ++++--
 i18n/po/nl.po                                      |  834 ++++++----
 i18n/po/nn.po                                      |  486 ++++--
 i18n/po/oc.po                                      |  486 ++++--
 i18n/po/pa.po                                      |  486 ++++--
 i18n/po/pl.po                                      |  594 +++++---
 i18n/po/pt.po                                      |  640 +++++---
 i18n/po/pt_BR.po                                   |  545 ++++---
 i18n/po/rm.po                                      |  486 ++++--
 i18n/po/ro.po                                      |  486 ++++--
 i18n/po/ru.po                                      |  603 +++++---
 i18n/po/sk.po                                      |  564 ++++---
 i18n/po/sl.po                                      |  486 ++++--
 i18n/po/sq.po                                      |  486 ++++--
 i18n/po/sr.po                                      |  486 ++++--
 i18n/po/sv.po                                      |  568 ++++---
 i18n/po/ta.po                                      |  538 ++++---
 i18n/po/te.po                                      |  486 ++++--
 i18n/po/th.po                                      |  486 ++++--
 i18n/po/tr.po                                      |  490 ++++--
 i18n/po/ug.po                                      |  486 ++++--
 i18n/po/uk.po                                      |  585 ++++---
 i18n/po/ur.po                                      |  486 ++++--
 i18n/po/vi.po                                      |  547 ++++---
 i18n/po/zh_CN.po                                   |  563 ++++---
 i18n/po/zh_TW.po                                   |  530 ++++---
 images/dialogs/relation/reverse.png                |  Bin 0 -> 602 bytes
 images/dialogs/relation/reverse.svg                |  198 ---
 images/dialogs/sort.png                            |  Bin 236 -> 858 bytes
 images/dialogs/sort_below.png                      |  Bin 249 -> 888 bytes
 linux/latest/DEBIAN/control                        |    2 +-
 .../usr/share/applications/josm-latest.desktop     |    7 +-
 .../share/icons/hicolor/16x16/apps/josm-latest.png |  Bin 0 -> 998 bytes
 .../share/icons/hicolor/32x32/apps/josm-latest.png |  Bin 0 -> 2661 bytes
 .../share/icons/hicolor/48x48/apps/josm-latest.png |  Bin 0 -> 4440 bytes
 .../icons/hicolor/scalable/apps/josm-latest.svg    |    1 +
 linux/latest/usr/share/menu/josm-latest            |    2 -
 linux/latest/usr/share/pixmaps/josm-latest-16.xpm  |  213 ---
 linux/latest/usr/share/pixmaps/josm-latest-32.xpm  |  714 ---------
 linux/tested/DEBIAN/control                        |    2 +-
 linux/tested/usr/share/applications/josm.desktop   |    7 +-
 .../usr/share/icons/hicolor/16x16/apps/josm.png    |  Bin 0 -> 998 bytes
 .../usr/share/icons/hicolor/32x32/apps/josm.png    |  Bin 0 -> 2661 bytes
 .../usr/share/icons/hicolor/48x48/apps/josm.png    |  Bin 0 -> 4440 bytes
 .../usr/share/icons/hicolor/scalable/apps/josm.svg |    1 +
 linux/tested/usr/share/menu/josm                   |    2 -
 linux/tested/usr/share/pixmaps/josm-16.xpm         |  213 ---
 linux/tested/usr/share/pixmaps/josm-32.xpm         |  714 ---------
 scripts/taginfoextract.groovy                      |   19 +-
 src/org/openstreetmap/josm/Main.java               |  205 +--
 .../openstreetmap/josm/actions/AboutAction.java    |    2 +-
 .../josm/actions/AddImageryLayerAction.java        |   16 +-
 .../josm/actions/AlignInCircleAction.java          |    8 +-
 .../josm/actions/AlignInLineAction.java            |   20 +-
 .../josm/actions/AutoScaleAction.java              |   23 +-
 .../josm/actions/CombineWayAction.java             |   26 +-
 src/org/openstreetmap/josm/actions/CopyAction.java |    2 +-
 .../josm/actions/CreateCircleAction.java           |    4 +-
 .../josm/actions/CreateMultipolygonAction.java     |    2 +-
 .../josm/actions/DistributeAction.java             |    8 +-
 .../josm/actions/DownloadAlongAction.java          |    7 +
 .../josm/actions/ExtensionFileFilter.java          |   90 +-
 .../josm/actions/HistoryInfoWebAction.java         |    2 +-
 .../josm/actions/ImageryAdjustAction.java          |    4 +-
 .../openstreetmap/josm/actions/InfoWebAction.java  |    2 +-
 .../josm/actions/JoinAreasAction.java              |   28 +-
 src/org/openstreetmap/josm/actions/JosmAction.java |    4 +-
 .../josm/actions/MapRectifierWMSmenuAction.java    |   11 +-
 .../josm/actions/MergeLayerAction.java             |   17 +-
 .../josm/actions/MergeNodesAction.java             |    2 +-
 .../openstreetmap/josm/actions/OpenFileAction.java |    2 +-
 .../josm/actions/OrthogonalizeAction.java          |   39 +-
 .../josm/actions/OverpassDownloadAction.java       |   54 +-
 .../josm/actions/PasteTagsAction.java              |   31 +-
 .../openstreetmap/josm/actions/PurgeAction.java    |    7 +-
 .../openstreetmap/josm/actions/RestartAction.java  |    2 +-
 .../josm/actions/ReverseWayAction.java             |   13 +-
 .../openstreetmap/josm/actions/SaveActionBase.java |   10 +-
 .../josm/actions/SearchNotesDownloadAction.java    |    2 +-
 .../josm/actions/SessionLoadAction.java            |    2 +-
 .../josm/actions/SessionSaveAsAction.java          |   33 +-
 .../josm/actions/ShowStatusReportAction.java       |    2 +-
 .../openstreetmap/josm/actions/SplitWayAction.java |  261 +++-
 .../openstreetmap/josm/actions/UnGlueAction.java   |   25 +-
 .../openstreetmap/josm/actions/UploadAction.java   |    5 +-
 .../josm/actions/UploadSelectionAction.java        |    4 +-
 .../openstreetmap/josm/actions/ValidateAction.java |    7 +-
 .../downloadtasks/AbstractDownloadTask.java        |   24 +-
 .../actions/downloadtasks/DownloadGpsTask.java     |   18 +-
 .../actions/downloadtasks/DownloadNotesTask.java   |   20 +-
 .../downloadtasks/DownloadNotesUrlIdTask.java      |    2 +-
 .../actions/downloadtasks/DownloadOsmTask.java     |   76 +-
 .../actions/downloadtasks/DownloadSessionTask.java |    2 +-
 .../actions/downloadtasks/DownloadTaskList.java    |    2 +-
 .../josm/actions/mapmode/DeleteAction.java         |    6 +-
 .../josm/actions/mapmode/DrawAction.java           |   18 +-
 .../josm/actions/mapmode/ExtrudeAction.java        |   27 +-
 .../actions/mapmode/ImproveWayAccuracyAction.java  |   21 +-
 .../josm/actions/mapmode/MapMode.java              |   16 +-
 .../josm/actions/mapmode/ModifiersSpec.java        |    4 +-
 .../josm/actions/mapmode/ParallelWayAction.java    |   18 +-
 .../josm/actions/mapmode/PlayHeadDragMode.java     |    8 +-
 .../josm/actions/mapmode/SelectAction.java         |   41 +-
 .../josm/actions/search/PushbackTokenizer.java     |    2 +-
 .../josm/actions/search/SearchAction.java          |  345 +++--
 .../josm/actions/search/SearchCompiler.java        |  217 ++-
 .../actions/upload/ApiPreconditionCheckerHook.java |    2 +-
 .../josm/actions/upload/UploadHook.java            |    2 +
 .../josm/actions/upload/UploadNotesTask.java       |    8 +-
 .../josm/actions/upload/ValidateUploadHook.java    |    2 +-
 .../josm/command/AddPrimitivesCommand.java         |    4 +-
 .../josm/command/ChangePropertyCommand.java        |   40 +-
 .../josm/command/ChangePropertyKeyCommand.java     |    6 +-
 src/org/openstreetmap/josm/command/Command.java    |    6 +-
 .../openstreetmap/josm/command/DeleteCommand.java  |    5 +-
 .../openstreetmap/josm/command/PurgeCommand.java   |    1 +
 .../openstreetmap/josm/command/RotateCommand.java  |    7 +-
 .../openstreetmap/josm/command/ScaleCommand.java   |    2 +-
 .../josm/command/SequenceCommand.java              |    2 +-
 .../josm/command/TransformNodesCommand.java        |    2 +
 .../josm/command/conflict/ConflictAddCommand.java  |    4 +-
 .../command/conflict/ConflictResolveCommand.java   |   20 +-
 .../conflict/CoordinateConflictResolveCommand.java |    2 +-
 .../DeletedStateConflictResolveCommand.java        |    2 +-
 .../conflict/ModifiedConflictResolveCommand.java   |    2 +-
 .../conflict/TagConflictResolveCommand.java        |    2 +-
 .../conflict/VersionConflictResolveCommand.java    |    2 +-
 .../conflict/WayNodesConflictResolverCommand.java  |    2 +-
 .../josm/corrector/CorrectionTable.java            |    2 +-
 .../josm/corrector/ReverseWayNoTagCorrector.java   |    1 +
 .../josm/corrector/ReverseWayTagCorrector.java     |    5 +-
 .../openstreetmap/josm/corrector/TagCorrector.java |    3 +-
 .../josm/corrector/UserCancelException.java        |    6 -
 src/org/openstreetmap/josm/data/APIDataSet.java    |    2 +-
 src/org/openstreetmap/josm/data/AutosaveTask.java  |    4 +-
 src/org/openstreetmap/josm/data/Bounds.java        |   10 +-
 .../josm/data/CustomConfigurator.java              |   10 +-
 src/org/openstreetmap/josm/data/DataSource.java    |    2 +-
 src/org/openstreetmap/josm/data/Preferences.java   |   65 +-
 .../openstreetmap/josm/data/ProjectionBounds.java  |    6 +-
 .../josm/data/SystemOfMeasurement.java             |    8 +-
 src/org/openstreetmap/josm/data/Version.java       |    6 +-
 .../josm/data/cache/BufferedImageCacheEntry.java   |    6 +-
 .../josm/data/cache/JCSCacheManager.java           |    4 +-
 .../josm/data/cache/JCSCachedTileLoaderJob.java    |    6 +-
 .../openstreetmap/josm/data/conflict/Conflict.java |    2 +-
 .../josm/data/conflict/ConflictCollection.java     |    2 +-
 .../openstreetmap/josm/data/coor/CachedLatLon.java |    2 +-
 .../openstreetmap/josm/data/coor/EastNorth.java    |   18 +-
 src/org/openstreetmap/josm/data/coor/LatLon.java   |   11 +-
 src/org/openstreetmap/josm/data/gpx/WayPoint.java  |    2 +-
 .../CachedAttributionBingAerialTileSource.java     |    2 +-
 .../josm/data/imagery/ImageryInfo.java             |   26 +-
 .../josm/data/imagery/ImageryLayerInfo.java        |    6 +-
 .../josm/data/imagery/OffsetBookmark.java          |    8 +-
 .../josm/data/imagery/TMSCachedTileLoader.java     |    2 +-
 .../josm/data/imagery/TMSCachedTileLoaderJob.java  |   31 +-
 .../josm/data/imagery/TemplatedWMSTileSource.java  |    2 +-
 .../josm/data/imagery/WMTSTileSource.java          |   11 +-
 .../josm/data/osm/AbstractPrimitive.java           |    6 +-
 src/org/openstreetmap/josm/data/osm/Changeset.java |    4 +-
 .../josm/data/osm/ChangesetDataSet.java            |    6 +-
 src/org/openstreetmap/josm/data/osm/DataSet.java   |    8 +-
 .../openstreetmap/josm/data/osm/DataSetMerger.java |    2 +-
 .../josm/data/osm/DatasetConsistencyTest.java      |    4 +-
 src/org/openstreetmap/josm/data/osm/Filter.java    |   28 +-
 .../openstreetmap/josm/data/osm/FilterMatcher.java |   16 +-
 .../josm/data/osm/MultipolygonBuilder.java         |    4 +-
 src/org/openstreetmap/josm/data/osm/Node.java      |    2 +-
 src/org/openstreetmap/josm/data/osm/NoteData.java  |    4 +-
 .../openstreetmap/josm/data/osm/OsmPrimitive.java  |   23 +-
 src/org/openstreetmap/josm/data/osm/OsmUtils.java  |    2 +-
 .../openstreetmap/josm/data/osm/QuadBuckets.java   |   10 +-
 .../josm/data/osm/RelationMemberData.java          |    2 +-
 src/org/openstreetmap/josm/data/osm/Storage.java   |   21 +-
 src/org/openstreetmap/josm/data/osm/Tag.java       |    4 +-
 .../openstreetmap/josm/data/osm/TigerUtils.java    |    9 +-
 src/org/openstreetmap/josm/data/osm/User.java      |    4 +-
 src/org/openstreetmap/josm/data/osm/Way.java       |    4 +-
 .../openstreetmap/josm/data/osm/WaySegment.java    |    2 +-
 .../josm/data/osm/event/DatasetEventManager.java   |    2 +-
 .../josm/data/osm/event/SelectionEventManager.java |    2 +-
 .../josm/data/osm/history/HistoryOsmPrimitive.java |    4 +-
 .../josm/data/osm/visitor/BoundingXYVisitor.java   |   35 +-
 .../josm/data/osm/visitor/paint/LineClip.java      |    2 +-
 .../data/osm/visitor/paint/MapRendererFactory.java |    3 +-
 .../josm/data/osm/visitor/paint/PaintColors.java   |    2 +-
 .../data/osm/visitor/paint/StyledMapRenderer.java  |   18 +-
 .../osm/visitor/paint/WireframeMapRenderer.java    |   21 +-
 .../osm/visitor/paint/relations/Multipolygon.java  |    2 +-
 .../visitor/paint/relations/MultipolygonCache.java |    4 +-
 .../josm/data/projection/AbstractProjection.java   |    8 +-
 .../josm/data/projection/CustomProjection.java     |    4 +-
 .../josm/data/projection/Ellipsoid.java            |    2 +-
 .../josm/data/projection/datum/CentricDatum.java   |    2 +-
 .../data/projection/datum/NTV2GridShiftFile.java   |    4 +-
 .../projection/datum/NTV2GridShiftFileWrapper.java |    2 +-
 .../josm/data/projection/datum/NTV2SubGrid.java    |    4 +-
 .../josm/data/validation/OsmValidator.java         |   10 +-
 .../openstreetmap/josm/data/validation/Test.java   |    3 +
 .../josm/data/validation/TestError.java            |   11 +-
 .../data/validation/routines/DomainValidator.java  |    2 +-
 .../josm/data/validation/tests/Coastlines.java     |    2 +-
 .../josm/data/validation/tests/DuplicateNode.java  |   13 +-
 .../data/validation/tests/DuplicateRelation.java   |   19 +-
 .../josm/data/validation/tests/DuplicateWay.java   |   19 +-
 .../josm/data/validation/tests/Highways.java       |   31 +-
 .../josm/data/validation/tests/InternetTags.java   |    2 +-
 .../josm/data/validation/tests/Lanes.java          |    2 +-
 .../data/validation/tests/MapCSSTagChecker.java    |   63 +-
 .../data/validation/tests/MultipolygonTest.java    |    6 +-
 .../data/validation/tests/OpeningHourTest.java     |    5 +-
 .../josm/data/validation/tests/PowerLines.java     |    8 +-
 .../data/validation/tests/RelationChecker.java     |   18 +-
 .../data/validation/tests/SimilarNamedWays.java    |    4 +-
 .../josm/data/validation/tests/TagChecker.java     |   52 +-
 .../josm/data/validation/tests/UnclosedWays.java   |    8 +-
 .../data/validation/tests/UnconnectedWays.java     |    2 +-
 .../josm/data/validation/tests/UntaggedNode.java   |   16 -
 .../josm/data/validation/tests/UntaggedWay.java    |    4 +-
 .../data/validation/tests/WayConnectedToArea.java  |    2 +-
 .../josm/data/validation/util/Entities.java        |   24 +-
 .../data/validation/util/MultipleNameVisitor.java  |    8 +-
 .../josm/gui/ConditionalOptionPaneUtil.java        |    7 +-
 .../josm/gui/DefaultNameFormatter.java             |   22 +-
 src/org/openstreetmap/josm/gui/ExtendedDialog.java |   14 +-
 src/org/openstreetmap/josm/gui/FileDrop.java       |   10 +-
 src/org/openstreetmap/josm/gui/GettingStarted.java |    6 +-
 .../josm/gui/HelpAwareOptionPane.java              |    2 +-
 .../openstreetmap/josm/gui/IconToggleButton.java   |    2 +-
 .../josm/gui/JosmUserIdentityManager.java          |    8 +-
 .../openstreetmap/josm/gui/MainApplication.java    |   30 +-
 src/org/openstreetmap/josm/gui/MainMenu.java       |   46 +-
 src/org/openstreetmap/josm/gui/MapFrame.java       |    7 +-
 src/org/openstreetmap/josm/gui/MapMover.java       |    4 +-
 src/org/openstreetmap/josm/gui/MapSlider.java      |    4 +-
 src/org/openstreetmap/josm/gui/MapStatus.java      |   87 +-
 src/org/openstreetmap/josm/gui/MapView.java        |   25 +-
 src/org/openstreetmap/josm/gui/MenuScroller.java   |    8 +-
 .../josm/gui/NavigatableComponent.java             |   69 +-
 .../josm/gui/NotificationManager.java              |   10 +-
 .../josm/gui/OsmPrimitivRenderer.java              |   17 +-
 .../openstreetmap/josm/gui/PleaseWaitRunnable.java |    2 +-
 src/org/openstreetmap/josm/gui/ScrollViewport.java |   10 +-
 .../openstreetmap/josm/gui/SelectionManager.java   |    4 +-
 src/org/openstreetmap/josm/gui/SideButton.java     |    6 +-
 src/org/openstreetmap/josm/gui/SplashScreen.java   |    6 +-
 .../openstreetmap/josm/gui/bbox/SizeButton.java    |    6 +-
 .../josm/gui/bbox/SlippyMapBBoxChooser.java        |    4 -
 .../josm/gui/bbox/SlippyMapControler.java          |   22 +-
 .../openstreetmap/josm/gui/bbox/SourceButton.java  |    2 +-
 .../josm/gui/bbox/TileSelectionBBoxChooser.java    |   12 +-
 .../josm/gui/conflict/pair/ConflictResolver.java   |    2 +-
 .../josm/gui/conflict/pair/ListMergeModel.java     |    2 +-
 .../josm/gui/conflict/pair/ListMerger.java         |   26 +-
 .../pair/nodes/NodeListTableCellRenderer.java      |    9 +-
 .../conflict/pair/properties/PropertiesMerger.java |   12 +-
 .../relation/RelationMemberTableCellRenderer.java  |    2 +-
 .../josm/gui/conflict/pair/tags/TagMergeItem.java  |    6 +-
 .../josm/gui/conflict/pair/tags/TagMergeModel.java |    2 +-
 .../josm/gui/conflict/pair/tags/TagMerger.java     |    8 +-
 .../tags/CombinePrimitiveResolverDialog.java       |   97 +-
 .../gui/conflict/tags/MultiValueCellEditor.java    |    2 +-
 .../tags/PasteTagsConflictResolverDialog.java      |   10 +-
 .../tags/RelationMemberConflictDecision.java       |    6 +
 .../tags/RelationMemberConflictResolver.java       |    2 +-
 .../tags/RelationMemberConflictResolverModel.java  |   94 +-
 .../conflict/tags/TagConflictResolutionUtil.java   |    2 +-
 .../conflict/tags/TagConflictResolverModel.java    |    4 +-
 .../josm/gui/dialogs/ChangesetDialog.java          |   12 +-
 .../josm/gui/dialogs/CommandStackDialog.java       |    8 +-
 .../josm/gui/dialogs/ConflictDialog.java           |    8 +-
 .../josm/gui/dialogs/ConflictResolutionDialog.java |   10 +-
 .../DeleteFromRelationConfirmationDialog.java      |    6 +-
 .../josm/gui/dialogs/DialogsPanel.java             |    2 +-
 .../josm/gui/dialogs/FilterDialog.java             |    5 +-
 .../josm/gui/dialogs/FilterTableModel.java         |    2 +-
 .../josm/gui/dialogs/InspectPrimitiveDialog.java   |    6 +-
 .../josm/gui/dialogs/LatLonDialog.java             |   37 +-
 .../josm/gui/dialogs/LayerListDialog.java          |   53 +-
 .../josm/gui/dialogs/LayerListPopup.java           |    2 +-
 .../josm/gui/dialogs/MapPaintDialog.java           |    8 +-
 .../josm/gui/dialogs/NotesDialog.java              |   12 +-
 .../josm/gui/dialogs/RelationListDialog.java       |    8 +-
 .../josm/gui/dialogs/SelectionListDialog.java      |   14 +-
 .../josm/gui/dialogs/ToggleDialog.java             |   21 +-
 .../josm/gui/dialogs/UserListDialog.java           |   14 +-
 .../josm/gui/dialogs/ValidatorDialog.java          |    6 +-
 .../dialogs/changeset/ChangesetCacheManager.java   |   19 +-
 .../dialogs/changeset/ChangesetContentPanel.java   |   14 +-
 .../changeset/ChangesetContentTableModel.java      |    4 +-
 .../dialogs/changeset/ChangesetDetailPanel.java    |   17 +-
 .../changeset/ChangesetDiscussionPanel.java        |    4 +-
 .../gui/dialogs/changeset/ChangesetTagsPanel.java  |    8 -
 .../changeset/SingleChangesetDownloadPanel.java    |    2 +-
 .../query/AdvancedChangesetQueryPanel.java         |   16 +-
 .../changeset/query/BasicChangesetQueryPanel.java  |    2 +-
 .../changeset/query/ChangesetQueryDialog.java      |    4 +-
 .../gui/dialogs/properties/PresetListPanel.java    |   24 +-
 .../gui/dialogs/properties/PropertiesDialog.java   |   39 +-
 .../josm/gui/dialogs/properties/TagEditHelper.java |   18 +-
 .../gui/dialogs/relation/ChildRelationBrowser.java |   12 +-
 .../dialogs/relation/GenericRelationEditor.java    |   71 +-
 .../gui/dialogs/relation/MemberRoleCellEditor.java |    9 +-
 .../josm/gui/dialogs/relation/MemberTable.java     |    6 +-
 .../relation/MemberTableLinkedCellRenderer.java    |    4 +-
 .../relation/MemberTableMemberCellRenderer.java    |   16 +-
 .../gui/dialogs/relation/MemberTableModel.java     |   24 +-
 .../relation/ReferringRelationsBrowser.java        |    4 +-
 .../dialogs/relation/RelationDialogManager.java    |    4 +-
 .../josm/gui/dialogs/relation/RelationTree.java    |    2 +-
 .../relation/SelectionTableCellRenderer.java       |   13 +-
 .../gui/dialogs/relation/sort/RelationNodeMap.java |    8 +-
 .../dialogs/relation/sort/WayConnectionType.java   |   10 +-
 .../gui/dialogs/validator/ValidatorTreePanel.java  |    4 +-
 .../josm/gui/download/BookmarkList.java            |    2 +-
 .../josm/gui/download/BookmarkSelection.java       |    6 +-
 .../josm/gui/download/BoundingBoxSelection.java    |    8 +-
 .../josm/gui/download/DownloadDialog.java          |   11 +-
 .../josm/gui/download/PlaceSelection.java          |   30 +-
 .../josm/gui/download/SlippyMapChooser.java        |   16 +-
 .../openstreetmap/josm/gui/help/HelpBrowser.java   |   14 +-
 .../josm/gui/help/HelpBrowserHistory.java          |    2 +-
 src/org/openstreetmap/josm/gui/help/HelpUtil.java  |    4 +-
 .../josm/gui/history/CoordinateInfoViewer.java     |    4 +-
 .../josm/gui/history/DiffTableModel.java           |    2 +-
 .../josm/gui/history/HistoryBrowserDialog.java     |    4 +-
 .../josm/gui/history/HistoryBrowserModel.java      |    9 +-
 .../josm/gui/history/HistoryLoadTask.java          |    6 +-
 .../josm/gui/history/NodeListViewer.java           |   15 +-
 .../RelationMemberListTableCellRenderer.java       |   12 +-
 .../josm/gui/history/TagTableCellRenderer.java     |   12 +-
 .../josm/gui/history/TwoColumnDiff.java            |    6 +-
 .../josm/gui/history/VersionInfoPanel.java         |    4 +-
 .../josm/gui/history/VersionTable.java             |   13 +-
 .../josm/gui/io/AbstractUploadDialog.java          |    2 +-
 .../josm/gui/io/ActionFlagsTableCell.java          |    2 +-
 .../josm/gui/io/ChangesetManagementPanel.java      |    4 +-
 .../josm/gui/io/CloseChangesetDialog.java          |    4 +-
 .../josm/gui/io/CredentialDialog.java              |   14 +-
 .../josm/gui/io/DownloadFileTask.java              |    2 +-
 .../io/DownloadPrimitivesWithReferrersTask.java    |    4 +-
 .../josm/gui/io/LayerNameAndFilePathTableCell.java |    6 +-
 .../josm/gui/io/OpenChangesetComboBoxModel.java    |    2 +-
 .../josm/gui/io/RecentlyOpenedFilesMenu.java       |    2 +-
 .../openstreetmap/josm/gui/io/SaveLayerInfo.java   |    2 +-
 .../josm/gui/io/SaveLayersDialog.java              |   47 +-
 .../openstreetmap/josm/gui/io/SaveLayersTable.java |    2 +-
 .../josm/gui/io/SaveLayersTableColumnModel.java    |   40 +-
 .../josm/gui/io/TagSettingsPanel.java              |    2 +-
 .../josm/gui/io/UploadAndSaveProgressRenderer.java |    2 +-
 .../openstreetmap/josm/gui/io/UploadDialog.java    |    6 +-
 .../josm/gui/io/UploadPrimitivesTask.java          |    4 +-
 .../josm/gui/io/UploadSelectionDialog.java         |    8 +-
 .../josm/gui/io/UploadStrategySelectionPanel.java  |    2 +-
 .../josm/gui/io/UploadedObjectsSummaryPanel.java   |    6 +-
 .../gui/layer/AbstractCachedTileSourceLayer.java   |    2 +-
 .../josm/gui/layer/AbstractTileSourceLayer.java    |   82 +-
 src/org/openstreetmap/josm/gui/layer/GpxLayer.java |    5 +-
 .../openstreetmap/josm/gui/layer/ImageryLayer.java |   49 +-
 .../josm/gui/layer/JumpToMarkerActions.java        |    2 +-
 src/org/openstreetmap/josm/gui/layer/Layer.java    |   39 +-
 .../openstreetmap/josm/gui/layer/NoteLayer.java    |    2 +-
 .../openstreetmap/josm/gui/layer/OsmDataLayer.java |   47 +-
 src/org/openstreetmap/josm/gui/layer/WMSLayer.java |   13 +-
 .../gui/layer/geoimage/CorrelateGpxWithImages.java |   24 +-
 .../josm/gui/layer/geoimage/GeoImageLayer.java     |   24 +-
 .../josm/gui/layer/geoimage/ImageDisplay.java      |   26 +-
 .../josm/gui/layer/geoimage/ImageEntry.java        |    4 +-
 .../josm/gui/layer/geoimage/ImageViewerDialog.java |   10 +-
 .../josm/gui/layer/geoimage/ThumbsLoader.java      |   10 +-
 .../gui/layer/gpx/ChooseTrackVisibilityAction.java |    2 +-
 .../gui/layer/gpx/ConvertToDataLayerAction.java    |  107 +-
 .../josm/gui/layer/gpx/DateFilterPanel.java        |    2 +-
 .../gui/layer/gpx/DownloadAlongTrackAction.java    |    6 +-
 .../josm/gui/layer/gpx/GpxDrawHelper.java          |    2 +-
 .../josm/gui/layer/gpx/ImportAudioAction.java      |   22 +-
 .../josm/gui/layer/gpx/ImportImagesAction.java     |    4 +-
 .../josm/gui/layer/markerlayer/AudioMarker.java    |    7 +-
 .../josm/gui/layer/markerlayer/Marker.java         |   67 +-
 .../josm/gui/layer/markerlayer/MarkerLayer.java    |   28 +-
 .../gui/layer/markerlayer/MarkerProducers.java     |    7 +-
 .../josm/gui/layer/markerlayer/PlayHeadMarker.java |   12 +-
 .../josm/gui/layer/markerlayer/WebMarker.java      |    2 +-
 .../josm/gui/mappaint/BoxTextElemStyle.java        |   15 +-
 .../openstreetmap/josm/gui/mappaint/Cascade.java   |    2 +-
 .../openstreetmap/josm/gui/mappaint/ElemStyle.java |   11 +-
 .../josm/gui/mappaint/ElemStyles.java              |    3 +-
 .../josm/gui/mappaint/Environment.java             |    4 +-
 .../gui/mappaint/LabelCompositionStrategy.java     |   21 +-
 .../josm/gui/mappaint/LineElemStyle.java           |    2 +-
 .../josm/gui/mappaint/LineTextElemStyle.java       |    2 +-
 .../openstreetmap/josm/gui/mappaint/MapImage.java  |    9 +-
 .../josm/gui/mappaint/MapPaintMenu.java            |    4 +-
 .../josm/gui/mappaint/MapPaintStyles.java          |   23 +-
 .../josm/gui/mappaint/MultiCascade.java            |    2 +-
 .../josm/gui/mappaint/NodeElemStyle.java           |    6 +-
 src/org/openstreetmap/josm/gui/mappaint/Range.java |    5 +-
 .../josm/gui/mappaint/RepeatImageElemStyle.java    |    2 +-
 .../josm/gui/mappaint/mapcss/Condition.java        |   81 +-
 .../gui/mappaint/mapcss/ExpressionFactory.java     |    2 +-
 .../josm/gui/mappaint/mapcss/Instruction.java      |    2 +-
 .../gui/mappaint/mapcss/LiteralExpression.java     |    2 +-
 .../josm/gui/mappaint/mapcss/MapCSSParser.jj       |   34 +-
 .../josm/gui/mappaint/mapcss/MapCSSRule.java       |    2 +-
 .../gui/mappaint/mapcss/MapCSSStyleSource.java     |    8 +-
 .../josm/gui/mappaint/mapcss/Selector.java         |   13 +-
 .../josm/gui/mappaint/xml/Prototype.java           |    2 +-
 .../josm/gui/mappaint/xml/XmlCondition.java        |    8 +-
 .../josm/gui/mappaint/xml/XmlStyleSource.java      |   14 +-
 .../gui/mappaint/xml/XmlStyleSourceHandler.java    |    6 +-
 .../gui/oauth/AuthorizationProcedureComboBox.java  |    2 +-
 .../gui/oauth/FullyAutomaticAuthorizationUI.java   |   12 +-
 .../gui/oauth/FullyAutomaticPropertiesPanel.java   |    2 +-
 .../josm/gui/oauth/ManualAuthorizationUI.java      |    6 +-
 .../josm/gui/oauth/OAuthAuthorizationWizard.java   |    4 +-
 .../gui/oauth/SemiAutomaticAuthorizationUI.java    |   16 +-
 .../josm/gui/preferences/PreferenceDialog.java     |    4 +-
 .../josm/gui/preferences/PreferenceSetting.java    |    1 +
 .../josm/gui/preferences/PreferenceTabbedPane.java |    7 +-
 .../josm/gui/preferences/SourceEditor.java         |   57 +-
 .../josm/gui/preferences/SubPreferenceSetting.java |    1 +
 .../josm/gui/preferences/ToolbarPreferences.java   |    6 +-
 .../preferences/advanced/AdvancedPreference.java   |    4 +-
 .../preferences/advanced/ExportProfileAction.java  |    2 +-
 .../gui/preferences/advanced/ListListEditor.java   |    4 +-
 .../gui/preferences/advanced/MapListEditor.java    |    4 +-
 .../gui/preferences/advanced/PreferencesTable.java |    4 +-
 .../gui/preferences/display/ColorPreference.java   |    6 +-
 .../preferences/display/LanguagePreference.java    |    4 +-
 .../gui/preferences/imagery/AddImageryPanel.java   |    2 +-
 .../preferences/imagery/CacheContentsPanel.java    |    4 +-
 .../preferences/imagery/CommonSettingsPanel.java   |   13 -
 .../gui/preferences/imagery/ImageryPreference.java |   18 +-
 .../josm/gui/preferences/imagery/WMSLayerTree.java |    4 +-
 .../gui/preferences/map/MapPaintPreference.java    |   26 +-
 .../preferences/map/TaggingPresetPreference.java   |    4 +-
 .../gui/preferences/plugin/PluginListPanel.java    |    4 +-
 .../gui/preferences/plugin/PluginPreference.java   |   13 +-
 .../preferences/plugin/PluginPreferencesModel.java |   11 +-
 .../projection/CodeProjectionChoice.java           |    2 +-
 .../projection/CustomProjectionChoice.java         |    4 +-
 .../LambertCC9ZonesProjectionChoice.java           |    2 +-
 .../projection/LambertProjectionChoice.java        |    2 +-
 .../projection/ProjectionPreference.java           |    2 +-
 .../projection/UTMProjectionChoice.java            |    2 +-
 .../OAuthAuthenticationPreferencesPanel.java       |   10 +-
 .../preferences/server/OsmApiUrlInputPanel.java    |    6 +-
 .../josm/gui/preferences/shortcut/PrefJPanel.java  |    6 +-
 .../ValidatorTagCheckerRulesPreference.java        |   23 +-
 .../josm/gui/progress/AbstractProgressMonitor.java |    2 +-
 .../gui/progress/PleaseWaitProgressMonitor.java    |    7 +-
 .../josm/gui/progress/ProgressMonitor.java         |    1 +
 .../josm/gui/progress/ProgressTaskId.java          |    4 +-
 .../progress/SwingRenderingProgressMonitor.java    |    2 +-
 .../josm/gui/tagging/TagCellEditor.java            |    8 +-
 .../josm/gui/tagging/TagCellRenderer.java          |    8 +-
 .../josm/gui/tagging/TagEditorModel.java           |    4 +-
 .../josm/gui/tagging/TagEditorPanel.java           |    8 +-
 .../openstreetmap/josm/gui/tagging/TagModel.java   |    4 +-
 .../openstreetmap/josm/gui/tagging/TagTable.java   |   18 +-
 .../josm/gui/tagging/TaggingPresetItem.java        |   70 -
 .../josm/gui/tagging/TaggingPresetItems.java       | 1593 --------------------
 .../gui/tagging/ac/AutoCompletingComboBox.java     |    4 +-
 .../gui/tagging/ac/AutoCompletingTextField.java    |    4 +-
 .../gui/tagging/ac/AutoCompletionItemPriority.java |    1 +
 .../josm/gui/tagging/ac/AutoCompletionList.java    |    7 +-
 .../josm/gui/tagging/ac/AutoCompletionManager.java |   24 +-
 .../josm/gui/tagging/package-info.java             |    4 +-
 .../gui/tagging/{ => presets}/TaggingPreset.java   |   80 +-
 .../TaggingPresetHandler.java}                     |    4 +-
 .../gui/tagging/presets/TaggingPresetItem.java     |  134 ++
 .../TaggingPresetLabel.java}                       |    6 +-
 .../{ => presets}/TaggingPresetListener.java       |    2 +-
 .../tagging/{ => presets}/TaggingPresetMenu.java   |    6 +-
 .../TaggingPresetNameTemplateList.java             |    6 +-
 .../tagging/{ => presets}/TaggingPresetReader.java |  140 +-
 .../{ => presets}/TaggingPresetSearchAction.java   |    2 +-
 .../{ => presets}/TaggingPresetSearchDialog.java   |    6 +-
 .../TaggingPresetSearchPrimitiveDialog.java        |   55 +-
 .../{ => presets}/TaggingPresetSelector.java       |   21 +-
 .../{ => presets}/TaggingPresetSeparator.java      |    2 +-
 .../tagging/{ => presets}/TaggingPresetType.java   |    2 +-
 .../gui/tagging/{ => presets}/TaggingPresets.java  |    2 +-
 .../josm/gui/tagging/presets/items/Check.java      |  122 ++
 .../josm/gui/tagging/presets/items/CheckGroup.java |   68 +
 .../josm/gui/tagging/presets/items/Combo.java      |  104 ++
 .../tagging/presets/items/ComboMultiSelect.java    |  498 ++++++
 .../gui/tagging/presets/items/ItemSeparator.java   |   35 +
 .../josm/gui/tagging/presets/items/Key.java        |   47 +
 .../josm/gui/tagging/presets/items/KeyedItem.java  |  162 ++
 .../josm/gui/tagging/presets/items/Label.java      |   50 +
 .../josm/gui/tagging/presets/items/Link.java       |   44 +
 .../gui/tagging/presets/items/MultiSelect.java     |   69 +
 .../josm/gui/tagging/presets/items/Optional.java   |   25 +
 .../josm/gui/tagging/presets/items/PresetLink.java |   50 +
 .../josm/gui/tagging/presets/items/Roles.java      |  132 ++
 .../josm/gui/tagging/presets/items/Space.java      |   34 +
 .../josm/gui/tagging/presets/items/Text.java       |  228 +++
 .../josm/gui/tagging/presets/items/TextItem.java   |   44 +
 .../gui/tagging/presets/items/package-info.java    |    6 +
 .../josm/gui/tagging/presets/package-info.java     |    6 +
 .../josm/gui/util/AdvancedKeyPressDetector.java    |    6 +-
 src/org/openstreetmap/josm/gui/util/GuiHelper.java |    3 +-
 .../josm/gui/util/HighlightHelper.java             |    5 +
 .../openstreetmap/josm/gui/util/RotationAngle.java |    8 +
 .../widgets/AbstractTextComponentValidator.java    |    2 +-
 .../gui/widgets/BoundingBoxSelectionPanel.java     |    6 +-
 .../josm/gui/widgets/ChangesetIdTextField.java     |    2 +-
 .../DisableShortcutsOnFocusGainedTextField.java    |    2 +
 .../openstreetmap/josm/gui/widgets/HtmlPanel.java  |    4 +-
 .../josm/gui/widgets/JMultilineLabel.java          |    4 +-
 .../josm/gui/widgets/JosmEditorPane.java           |    6 +-
 .../josm/gui/widgets/JosmHTMLEditorKit.java        |   12 +-
 .../josm/gui/widgets/JosmHTMLFactory.java          |   37 +
 .../josm/gui/widgets/JosmImageView.java            |  169 +++
 .../josm/gui/widgets/MultiSplitLayout.java         |   14 +-
 .../josm/gui/widgets/MultiSplitPane.java           |   12 +-
 .../josm/gui/widgets/QuadStateCheckBox.java        |    1 +
 .../josm/gui/widgets/TextContextualPopupMenu.java  |    2 +-
 .../josm/io/BoundingBoxDownloader.java             |   16 +-
 .../openstreetmap/josm/io/CacheCustomContent.java  |    4 +-
 src/org/openstreetmap/josm/io/CachedFile.java      |   11 +-
 .../josm/io/ChangesetClosedException.java          |    2 +-
 src/org/openstreetmap/josm/io/ChangesetQuery.java  |   16 +-
 src/org/openstreetmap/josm/io/Compression.java     |   11 +-
 .../josm/io/DefaultProxySelector.java              |    2 +-
 src/org/openstreetmap/josm/io/FileImporter.java    |    1 +
 src/org/openstreetmap/josm/io/GeoJSONExporter.java |   27 +-
 src/org/openstreetmap/josm/io/GeoJSONWriter.java   |   43 +-
 src/org/openstreetmap/josm/io/GpxExporter.java     |   53 +-
 src/org/openstreetmap/josm/io/GpxImporter.java     |    4 +-
 src/org/openstreetmap/josm/io/GpxReader.java       |   10 +-
 src/org/openstreetmap/josm/io/GpxWriter.java       |   20 +-
 .../josm/io/InvalidXmlCharacterFilter.java         |    6 +-
 src/org/openstreetmap/josm/io/JpgImporter.java     |    4 +-
 src/org/openstreetmap/josm/io/MessageNotifier.java |    8 +-
 .../josm/io/MultiFetchServerObjectReader.java      |   28 +-
 src/org/openstreetmap/josm/io/NMEAImporter.java    |    7 +-
 src/org/openstreetmap/josm/io/NmeaReader.java      |   24 +-
 src/org/openstreetmap/josm/io/NoteImporter.java    |    6 +-
 src/org/openstreetmap/josm/io/NoteReader.java      |    2 +-
 src/org/openstreetmap/josm/io/OsmApi.java          |   21 +-
 .../openstreetmap/josm/io/OsmChangeBuilder.java    |    2 +-
 .../openstreetmap/josm/io/OsmChangeImporter.java   |    9 +-
 .../openstreetmap/josm/io/OsmChangesetParser.java  |   10 +-
 src/org/openstreetmap/josm/io/OsmConnection.java   |   10 +-
 src/org/openstreetmap/josm/io/OsmExporter.java     |    2 +-
 .../openstreetmap/josm/io/OsmHistoryReader.java    |    2 +-
 src/org/openstreetmap/josm/io/OsmImporter.java     |   13 +-
 src/org/openstreetmap/josm/io/OsmReader.java       |   10 +-
 .../josm/io/OsmServerLocationReader.java           |    2 +-
 src/org/openstreetmap/josm/io/OsmServerReader.java |    6 +-
 src/org/openstreetmap/josm/io/OsmServerWriter.java |    8 +-
 src/org/openstreetmap/josm/io/OsmWriter.java       |   46 +-
 .../josm/io/OverpassDownloadReader.java            |    8 +-
 .../openstreetmap/josm/io/ProgressInputStream.java |    4 +-
 .../josm/io/UTFInputStreamReader.java              |    2 +
 src/org/openstreetmap/josm/io/XmlWriter.java       |    1 +
 .../josm/io/auth/AbstractCredentialsAgent.java     |    1 +
 .../josm/io/auth/CredentialsAgent.java             |    7 +-
 .../josm/io/auth/DefaultAuthenticator.java         |    2 +-
 .../josm/io/imagery/ImageryReader.java             |   10 +-
 .../openstreetmap/josm/io/imagery/WMSImagery.java  |    6 +-
 .../josm/io/remotecontrol/AddTagsDialog.java       |    8 +-
 .../io/remotecontrol/RemoteControlHttpServer.java  |    6 +-
 .../io/remotecontrol/RemoteControlHttpsServer.java |   11 +-
 .../josm/io/remotecontrol/RequestProcessor.java    |    6 +-
 .../io/remotecontrol/handler/AddNodeHandler.java   |    4 +-
 .../io/remotecontrol/handler/AddWayHandler.java    |    6 +-
 .../io/remotecontrol/handler/FeaturesHandler.java  |    4 +-
 .../remotecontrol/handler/LoadAndZoomHandler.java  |    4 +-
 .../io/remotecontrol/handler/LoadDataHandler.java  |   12 +-
 .../io/remotecontrol/handler/RequestHandler.java   |    5 +-
 .../io/remotecontrol/handler/VersionHandler.java   |    2 +-
 .../josm/io/session/GeoImageSessionExporter.java   |    8 +-
 .../josm/io/session/GeoImageSessionImporter.java   |    2 +-
 .../josm/io/session/ImagerySessionExporter.java    |    2 +
 .../josm/io/session/ImagerySessionImporter.java    |    9 +-
 .../josm/io/session/MarkerSessionImporter.java     |    2 +-
 .../josm/io/session/OsmDataSessionExporter.java    |    2 +-
 .../josm/io/session/SessionLayerExporter.java      |   21 +-
 .../josm/io/session/SessionLayerImporter.java      |   10 +-
 .../josm/io/session/SessionReader.java             |   19 +-
 .../josm/io/session/SessionWriter.java             |   13 +-
 src/org/openstreetmap/josm/plugins/Plugin.java     |    4 +-
 .../josm/plugins/PluginDownloadTask.java           |    5 +-
 .../openstreetmap/josm/plugins/PluginHandler.java  |   64 +-
 .../josm/plugins/PluginInformation.java            |   36 +-
 .../josm/plugins/PluginListParser.java             |    2 +-
 .../openstreetmap/josm/plugins/PluginProxy.java    |   28 +-
 .../josm/tools/AlphanumComparator.java             |   10 +-
 src/org/openstreetmap/josm/tools/AudioPlayer.java  |   31 +-
 .../josm/tools/BugReportExceptionHandler.java      |   10 +-
 src/org/openstreetmap/josm/tools/ColorHelper.java  |    2 +-
 src/org/openstreetmap/josm/tools/CopyList.java     |    2 +-
 src/org/openstreetmap/josm/tools/Diff.java         |   62 +-
 .../openstreetmap/josm/tools/ExceptionUtil.java    |    6 +-
 src/org/openstreetmap/josm/tools/FontsManager.java |    2 +-
 src/org/openstreetmap/josm/tools/GBC.java          |   51 +-
 src/org/openstreetmap/josm/tools/Geometry.java     |    9 +-
 src/org/openstreetmap/josm/tools/I18n.java         |   12 +-
 .../openstreetmap/josm/tools/ImageProvider.java    |   83 +-
 .../openstreetmap/josm/tools/ImageResource.java    |    4 +-
 src/org/openstreetmap/josm/tools/LanguageInfo.java |   28 +-
 src/org/openstreetmap/josm/tools/MultiMap.java     |    4 +-
 .../josm/tools/MultikeyActionsHandler.java         |    6 +-
 .../openstreetmap/josm/tools/OsmUrlToBounds.java   |    4 +-
 .../josm/tools/OverpassTurboQueryWizard.java       |    1 -
 src/org/openstreetmap/josm/tools/Pair.java         |    2 +-
 .../openstreetmap/josm/tools/PlatformHookOsx.java  |   25 +-
 .../josm/tools/PlatformHookUnixoid.java            |   59 +-
 .../josm/tools/PlatformHookWindows.java            |   11 +-
 src/org/openstreetmap/josm/tools/Predicates.java   |   18 +
 src/org/openstreetmap/josm/tools/Shortcut.java     |   27 +-
 .../josm/tools/SubclassFilteredCollection.java     |    2 +-
 .../openstreetmap/josm/tools/TextTagParser.java    |   10 +-
 .../josm/tools/UserCancelException.java            |   47 +
 src/org/openstreetmap/josm/tools/Utils.java        |   30 +-
 src/org/openstreetmap/josm/tools/WikiReader.java   |   20 +-
 .../openstreetmap/josm/tools/WindowGeometry.java   |    4 +-
 .../openstreetmap/josm/tools/XmlObjectParser.java  |   10 +-
 .../josm/tools/XmlParsingException.java            |    2 +-
 .../josm/tools/date/FallbackDateParser.java        |    2 +-
 .../josm/tools/date/PrimaryDateParser.java         |    4 +-
 .../template_engine/SearchExpressionCondition.java |    2 +-
 .../josm/tools/template_engine/TemplateParser.java |   23 +-
 .../josm/tools/template_engine/Tokenizer.java      |    7 +-
 .../josm/tools/template_engine/Variable.java       |    2 +-
 styles/standard/elemstyles.mapcss                  |   11 +
 test/data/planet-notes-extract.osn                 |   43 +
 test/data/regress/11957/data.osm                   |   30 +
 test/data/regress/11992/shapes.osm                 |  173 +++
 test/data/sessions/bing.jos                        |   21 +
 .../josm/io/MultiFetchServerObjectReaderTest.java  |    6 +-
 .../josm/io/OsmServerBackreferenceReaderTest.java  |   14 +-
 .../josm/data/osm/OsmDataGenerator.java            |    1 +
 .../mapcss/MapCSSStyleSourceFilterTest.java        |    2 +-
 test/unit/org/CustomMatchers.java                  |   33 +-
 test/unit/org/openstreetmap/josm/MainTest.java     |   68 +-
 .../josm/actions/AlignInLineActionTest.java        |    2 +-
 .../josm/actions/CombineWayActionTest.java         |   57 +
 .../openstreetmap/josm/actions/CopyActionTest.java |   25 +-
 .../josm/actions/CreateCircleActionTest.java       |    9 +-
 .../actions/CreateMultipolygonActionTest.groovy    |   18 +-
 .../josm/actions/JoinAreasActionTest.java          |   25 +
 .../josm/actions/SplitWayActionTest.java           |    4 +-
 .../josm/actions/UnJoinNodeWayActionTest.java      |    2 +-
 .../actions/downloadtasks/DownloadGpsTaskTest.java |   60 +
 .../downloadtasks/DownloadNotesTaskTest.java       |   58 +
 .../actions/downloadtasks/DownloadOsmTaskTest.java |   61 +
 .../josm/actions/mapmode/DrawActionTest.java       |   98 ++
 .../josm/actions/mapmode/MapViewMock.java          |   69 +
 .../josm/actions/mapmode/SelectActionTest.java     |   82 +-
 .../josm/actions/search/SearchCompilerTest.java    |  365 ++++-
 .../command/conflict/ConflictAddCommandTest.java   |   56 +
 .../CoordinateConflictResolveCommandTest.java      |   71 +
 .../data/cache/JCSCachedTileLoaderJobTest.java     |   16 +-
 .../openstreetmap/josm/data/coor/LatLonTest.java   |    3 +
 .../data/imagery/TemplatedWMSTileSourceTest.java   |    9 +-
 .../josm/data/imagery/WMTSTileSourceTest.java      |   24 +-
 .../josm/data/osm/APIDataSetTest.java              |    6 +
 .../josm/data/osm/DataSetMergerTest.java           |    6 +
 .../openstreetmap/josm/data/osm/FilterTest.java    |    7 +-
 .../josm/data/osm/OsmPrimitiveKeyHandlingTest.java |    4 +-
 .../josm/data/osm/OsmPrimitiveTest.java            |    3 +
 .../openstreetmap/josm/data/osm/OsmUtilsTest.java  |   16 +-
 .../josm/data/osm/QuadBucketsTest.java             |    3 +
 .../josm/data/osm/history/HistoryNodeTest.java     |    3 +
 .../josm/data/osm/history/HistoryWayTest.java      |    3 +
 .../visitor/MergeSourceBuildingVisitorTest.java    |    3 +
 .../josm/data/projection/SwissGridTest.java        |    2 +-
 .../validation/tests/ConditionalKeysTest.groovy    |    2 +-
 .../josm/data/validation/tests/HighwaysTest.groovy |   26 +-
 .../validation/tests/MapCSSTagCheckerTest.java     |   64 +-
 .../data/validation/tests/OpeningHourTestTest.java |   92 +-
 .../validation/tests/RelationCheckerTest.groovy    |    2 +-
 .../josm/data/validation/tests/TagCheckerTest.java |   34 +-
 .../data/validation/tests/UnconnectedWaysTest.java |   17 +-
 .../validation/util/MultipleNameVisitorTest.java   |   35 +
 .../josm/gui/DefaultNameFormatterTest.java         |   40 +-
 .../josm/gui/NavigatableComponentTest.java         |   13 +-
 .../gui/conflict/nodes/NodeListMergeModelTest.java |    3 +
 .../properties/PropertiesMergeModelTest.java       |    3 +
 .../RelationMemberConflictResolverModelTest.java   |  122 ++
 .../josm/gui/conflict/tags/TagMergeItemTest.java   |    6 +
 .../josm/gui/conflict/tags/TagMergeModelTest.java  |    6 +
 .../josm/gui/dialogs/LatLonDialogTest.java         |  118 +-
 .../dialogs/relation/sort/RelationSorterTest.java  |    6 +-
 .../sort/WayConnectionTypeCalculatorTest.java      |    7 +-
 .../mapcss/ChildOrParentSelectorTest.groovy        |   14 +-
 .../mappaint/mapcss/KeyValueConditionTest.groovy   |   19 +-
 .../gui/preferences/ToolbarPreferencesTest.java    |    5 +-
 .../preferences/map/MapPaintPreferenceTest.java    |   53 +
 .../map/TaggingPresetPreferenceTest.java           |   88 ++
 .../ValidatorTagCheckerRulesPreferenceTest.java    |   53 +
 .../{ => presets}/PresetClassificationsTest.java   |   25 +-
 .../{ => presets}/TaggingPresetReaderTest.java     |   23 +-
 .../josm/gui/util/RotationAngleTest.java           |   20 +-
 .../org/openstreetmap/josm/io/NoteReaderTest.java  |   85 ++
 .../josm/io/remotecontrol/RemoteControlTest.java   |   45 +-
 .../remotecontrol/handler/ImportHandlerTest.java   |   14 +-
 .../remotecontrol/handler/RequestHandlerTest.java  |   40 +-
 .../josm/io/session/SessionReaderTest.java         |   17 +
 .../josm/io/session/SessionWriterTest.java         |   58 +-
 .../josm/plugins/PluginHandlerTest.java            |   74 +
 .../org/openstreetmap/josm/tools/GeometryTest.java |    3 +
 .../josm/tools/ImageProviderTest.java              |   16 +-
 .../josm/tools/OsmUrlToBoundsTest.java             |    3 +-
 .../josm/tools/OverpassTurboQueryWizardTest.java   |   20 +-
 .../josm/tools/TextTagParserTest.java              |   27 +-
 .../org/openstreetmap/josm/tools/UtilsTest.java    |   45 +-
 .../josm/tools/date/DateUtilsTest.java             |   22 +-
 .../tools/template_engine/TemplateEngineTest.java  |   68 +-
 780 files changed, 36934 insertions(+), 22853 deletions(-)

diff --git a/.project b/.project
index 7874e55..6090b70 100644
--- a/.project
+++ b/.project
@@ -35,8 +35,14 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
+		<nature>org.sonarlint.eclipse.core.sonarlintNature</nature>
 		<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>org.sonar.ide.eclipse.core.sonarNature</nature>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 78c45e8..aaf27e6 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -41,7 +41,7 @@ org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
 org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
@@ -55,7 +55,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
 org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
diff --git a/.settings/org.sonar.ide.eclipse.core.prefs b/.settings/org.sonar.ide.eclipse.core.prefs
index e1b42aa..4b9cf97 100644
--- a/.settings/org.sonar.ide.eclipse.core.prefs
+++ b/.settings/org.sonar.ide.eclipse.core.prefs
@@ -1,6 +1,6 @@
 eclipse.preferences.version=1
 extraProperties=
-lastAnalysisDate=1440282418279
+lastAnalysisDate=1444606545000
 projectKey=josm
 serverUrl=https\://josm.openstreetmap.de/sonar
 version=2
diff --git a/README b/README
index 43649db..3581879 100644
--- a/README
+++ b/README
@@ -110,7 +110,7 @@ This is an overview of the files and directories in the JOSM code repository:
 - test/                     automated software tests
     - data/                 resources used for some tests
     - functional/           functional tests (source code)
-    - lib/                  libraries needed for (some of) the tests
+    - lib/                  libraries needed for (some of) the tests, including JUnit
     - performance/          performance tests (source code)
     - unit/                 unit tests (source code)
 - tools/                    libraries and tools that help in the development process
@@ -122,7 +122,7 @@ This is an overview of the files and directories in the JOSM code repository:
     - commons-cli-1.3.1.jar dependency of Groovy Ant task
     - findbugs/             libs and config files for findbugs (automatically detects common bugs and potential
                             problems in source code); can be launched as an ant target in build.xml
-    - groovy-all-2.4.4.jar  used for some unit tests and various scripts
+    - groovy-all-2.4.5.jar  used for some unit tests and various scripts
     - jacocoant.jar         used to include coverage data into JUnit test reports 
     - javacc.jar            used in the build process to generate some .java files from a javacc source file
                             (src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj)
diff --git a/REVISION b/REVISION
index dabff9b..903a5ff 100644
--- a/REVISION
+++ b/REVISION
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <info>
 <entry
-   kind="dir"
    path="trunk"
-   revision="8800">
+   revision="8964"
+   kind="dir">
 <url>https://josm.openstreetmap.de/svn/trunk</url>
 <relative-url>^/trunk</relative-url>
 <repository>
@@ -11,9 +11,9 @@
 <uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
 </repository>
 <commit
-   revision="8800">
+   revision="8964">
 <author>simon04</author>
-<date>2015-09-27T20:11:06.755093Z</date>
+<date>2015-10-27T22:40:20.350192Z</date>
 </commit>
 </entry>
 </info>
diff --git a/build.xml b/build.xml
index 47d4162..c10a2b5 100644
--- a/build.xml
+++ b/build.xml
@@ -14,17 +14,13 @@
     <property name="build.dir" location="build"/>
     <property name="javacc.home" location="tools"/>
     <property name="mapcss.dir" location="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss"/>
-    <property name="groovy.jar" location="tools/groovy-all-2.4.4.jar"/>
+    <property name="groovy.jar" location="tools/groovy-all-2.4.5.jar"/>
     <!-- build parameter: compression level (ant -Dclevel=N)
              N ranges from 0 (no compression) to 9 (maximum compression)
              default: 9 -->
     <condition property="clevel" value="${clevel}" else="9">
         <isset property="clevel"/>
     </condition>
-    <!-- For Windows-specific stuff -->
-    <condition property="isWindows">
-        <os family="Windows"/>
-    </condition>
     <!-- For Java9-specific stuff -->
     <condition property="isJava9">
         <equals arg1="${ant.java.version}" arg2="1.9" />
@@ -607,7 +603,7 @@ Build-Date: ${build.tstamp}
 
     <target name="checkstyle">
         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" 
-        	classpath="tools/checkstyle/checkstyle-6.10.1-all.jar"/>
+        	classpath="tools/checkstyle/checkstyle-6.11.2-all.jar"/>
         <checkstyle config="tools/checkstyle/josm_checks.xml">
             <fileset dir="${basedir}/src/org/openstreetmap/josm" includes="**/*.java" 
             	excludes="gui/mappaint/mapcss/parsergen/*.java"/>
diff --git a/data/defaultpresets.xml b/data/defaultpresets.xml
index 4a2bd9d..b243c24 100644
--- a/data/defaultpresets.xml
+++ b/data/defaultpresets.xml
@@ -17,7 +17,7 @@
     </chunk>
     <chunk id="surface_smoothness">
         <reference ref="surface" />
-        <combo key="smoothness" text="Smoothness" values_searchable="true">
+        <combo key="smoothness" text="Smoothness" values_searchable="true" values_sort="false">
             <list_entry value="excellent" short_description="Thin Rollers: rollerblade, skateboard" />
             <list_entry value="good" short_description="Thin Wheels: racing bike" />
             <list_entry value="intermediate" short_description="Wheels: city bike, wheelchair, scooter" />
@@ -116,10 +116,10 @@
         <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" length="3" />
     </chunk>
     <chunk id="service_times">
-        <combo key="service_times" text="Service Times" delimiter="|" values="18:00|sunset,sunrise|Su 09:30,11:00|Sa,Su,PH 09:00|Sa 18:00; Su 10:45|Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00|Sa 10:00+|week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00" />
+        <combo key="service_times" text="Service Times" delimiter="|" values="18:00|sunset,sunrise|Su 09:30,11:00|Sa,Su,PH 09:00|Sa 18:00; Su 10:45|Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00|Sa 10:00+|week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00" values_no_i18n="true" />
     </chunk>
     <chunk id="oh">
-        <combo key="opening_hours" text="Opening Hours" delimiter="|" values="24/7|08:30-12:30,15:30-20:00|Sa-Su 00:00-24:00|Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off|Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00|Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off|sunrise-sunset|Su 10:00+|week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00" />
+        <combo key="opening_hours" text="Opening Hours" delimiter="|" values="24/7|08:30-12:30,15:30-20:00|Sa-Su 00:00-24:00|Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off|Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00|Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off|sunrise-sunset|Su 10:00+|week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00" values_no_i18n="true" />
     </chunk>
     <chunk id="wheelchair">
         <combo key="wheelchair" text="Wheelchairs" values="yes,limited,no" />
@@ -353,6 +353,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=motorway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=motorway"
                   ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:highway=motorway"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=motorway"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:highway=motorway"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=motorway"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=motorway"
@@ -411,6 +412,7 @@
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=trunk"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=trunk"
                   ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:highway=trunk"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=trunk"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=trunk"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=trunk"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=trunk"
@@ -466,6 +468,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=primary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=primary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=primary"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=primary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=primary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=primary"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=primary"
@@ -506,6 +509,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=secondary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=secondary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=secondary"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=secondary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=secondary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=secondary"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=secondary"
@@ -545,6 +549,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=tertiary"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=tertiary"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=tertiary"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=tertiary"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=tertiary"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=tertiary"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=tertiary"
@@ -582,6 +587,7 @@
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=unclassified"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=unclassified"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=unclassified"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=unclassified"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=unclassified"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=unclassified"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=unclassified"
@@ -605,6 +611,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=residential"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=residential"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=residential"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=residential"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=residential"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:highway=residential"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=residential"
@@ -697,6 +704,7 @@
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=service"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=service"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=service"
+                  ms.href="http://wiki.openstreetmap.org/wiki/Ms:Tag:highway=service"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=service"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=service"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=service"
@@ -872,6 +880,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:ford"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:ford"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:ford"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:ford"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:ford"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:ford"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:ford" />
@@ -939,7 +948,7 @@
                     <list_entry value="difficult_alpine_hiking" display_value="T6 - hazardous alpine trail with climbing" short_description="climbing up to second grade. Often very exposed, precarious jagged rocks, glacier with danger to slip and fall" />
                 </combo>
                 <combo key="mtb:scale" text="MTB Scale" values="0,1,2,3,4,5" />
-                <combo key="trail_visibility" text="Visibility" values="excellent,good,intermediate,bad,horrible,no" values_context="trail_visibility" />
+                <combo key="trail_visibility" text="Visibility" values="excellent,good,intermediate,bad,horrible,no" values_context="trail_visibility" values_sort="false" />
                 <combo key="foot" text="Foot" values="yes,official,designated,permissive,destination,delivery,private,no" />
                 <combo key="bicycle" text="Bicycle" values="yes,official,designated,permissive,destination,delivery,private,use_sidepath,no" />
                 <combo key="horse" text="Horse" values="yes,official,designated,permissive,destination,delivery,private,no" />
@@ -1201,6 +1210,7 @@
         </item> <!-- Mini-Roundabout -->
         <item name="Pedestrian Crossing" icon="styles/standard/vehicle/crossing.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:crossing"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:crossing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:crossing"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:crossing"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:crossing"
@@ -1264,6 +1274,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_sign"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_sign"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:traffic_sign"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:traffic_sign"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:traffic_sign"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:traffic_sign" />
             <space />
@@ -1507,6 +1518,7 @@
         </item> <!-- Retaining Wall -->
         <item name="Ditch" name_context="Barrier" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=ditch"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=ditch"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=ditch"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=ditch"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=ditch"
@@ -1642,6 +1654,7 @@
     <group name="Passageways" icon="presets/tunnel.png">
         <item name="Tunnel" icon="presets/tunnel.png" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:tunnel"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:tunnel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:tunnel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:tunnel"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:tunnel"
@@ -1683,6 +1696,7 @@
         </item> <!-- Building Passage -->
         <item name="Arcade" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:covered"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:covered"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:covered"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:covered"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Key:covered"
@@ -2442,7 +2456,8 @@
             </optional>
         </item> <!-- Mixed Lift -->
         <item name="Drag Lift" icon="presets/drag_lift.png" type="way" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=drag_lift" />
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=drag_lift"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=drag_lift" />
             <space />
             <combo key="aerialway" text="Type" values="drag_lift,t-bar,j-bar,platter,rope_tow" display_values="drag_lift (general type - use only if exact type (see values below) is unknown),t-bar,j-bar,platter,rope_tow" match="keyvalue" />
             <reference ref="name_ref" />
@@ -2550,6 +2565,7 @@
         <item name="Fuel" icon="presets/fuel.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fuel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fuel"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=fuel"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=fuel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fuel"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=fuel"
@@ -2613,6 +2629,7 @@
         <item name="Wash" icon="presets/car_wash.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_wash"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_wash"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=car_wash"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_wash"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=car_wash"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=car_wash"
@@ -2675,6 +2692,7 @@
         <item name="Rental" icon="presets/car_rental.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_rental"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_rental"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=car_rental"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_rental"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=car_rental"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=car_rental"
@@ -2705,6 +2723,7 @@
         <item name="Parking" icon="styles/standard/vehicle/parking/motorbike.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=motorcycle_parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=motorcycle_parking"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=motorcycle_parking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=motorcycle_parking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=motorcycle_parking" />
             <space />
@@ -2745,6 +2764,7 @@
         <item name="Parking" icon="styles/standard/vehicle/parking/bicycle.png" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_parking"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bicycle_parking"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bicycle_parking"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=bicycle_parking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bicycle_parking"
@@ -2788,6 +2808,7 @@
         <item name="Rental" icon="presets/bicycle_rental.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_rental"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_rental"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bicycle_rental"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=bicycle_rental"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=bicycle_rental"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bicycle_rental"
@@ -3061,6 +3082,7 @@
         <item name="Bus Station" icon="presets/bus.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bus_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bus_station"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bus_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bus_station"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=bus_station"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=bus_station" />
@@ -3103,6 +3125,7 @@
     <item name="Taxi" icon="presets/taxi.png" type="node,closedway" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=taxi"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=taxi"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=taxi"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=taxi"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=taxi"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=taxi"
@@ -3348,6 +3371,25 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Alpine Hut -->
+        <item name="Wilderness Hut" icon="styles/standard/accommodation/wilderness_hut_blue.png" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=wilderness_hut"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=wilderness_hut"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:tourism=wilderness_hut" />
+            <space />
+            <key key="tourism" value="wilderness_hut" />
+            <reference ref="name_operator" />
+            <combo key="access" text="Access rights" values="yes,permissive,customers,private" />
+            <text key="capacity" text="Capacity" />
+            <reference ref="fee" />
+            <check key="toilets" text="Toilets" />
+            <check key="shower" text="Shower" />
+            <combo key="drinking_water" text="Drinking Water" values="yes,no,seasonal" />
+            <combo key="reservation" text="Reservation" values="yes,no,required,recommended,members_only" />
+            <text key="ele" text="Elevation" />
+            <text key="description" text="Closer Description" />
+            <space />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Wilderness Hut -->
         <separator/>
         <item name="Caravan Site/RV Park" icon="styles/standard/accommodation/camping/caravan.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=caravan_site"
@@ -3396,6 +3438,7 @@
         <item name="Restaurant" icon="styles/standard/food/restaurant.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=restaurant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=restaurant"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=restaurant"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=restaurant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=restaurant"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=restaurant"
@@ -3418,6 +3461,7 @@
         <item name="Fast Food" icon="presets/fastfood.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fast_food"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fast_food"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=fast_food"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=fast_food"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=fast_food"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=fast_food"
@@ -3435,6 +3479,7 @@
         </item> <!-- Fast Food -->
         <item name="Food Court" icon="presets/restaurant.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=food_court"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=food_court"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=food_court"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=food_court"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=food_court" />
@@ -3474,6 +3519,7 @@
         <item name="Pub" icon="presets/pub.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pub"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=pub"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=pub"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=pub"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=pub"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=pub"
@@ -3526,42 +3572,11 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bar -->
-        <item name="Night Club" icon="styles/standard/leisure/discoball.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nightclub"
-                  da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=nightclub"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=nightclub"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=nightclub"
-                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=nightclub"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=nightclub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=nightclub"
-                  ro.href="http://wiki.openstreetmap.org/wiki/Ro:Tag:amenity=nightclub"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=nightclub" />
-            <space />
-            <key key="amenity" value="nightclub" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <space />
-            <reference ref="internet_smoking" />
-            <space />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Night Club -->
-        <item name="Strip Club" icon="styles/standard/leisure/nightclub.png" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=stripclub"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=stripclub"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=stripclub"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=stripclub"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=stripclub" />
-            <space />
-            <key key="amenity" value="stripclub" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <space />
-            <reference ref="internet_smoking" />
-            <space />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Strip Club -->
     </group> <!-- Food+Drinks -->
     <group name="Tourism" icon="presets/sightseeing.png">
         <item name="Attraction" icon="presets/sightseeing.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=attraction"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=attraction"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:tourism=attraction"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:tourism=attraction"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:tourism=attraction" />
@@ -3641,6 +3656,7 @@
         </item> <!-- Information Board -->
         <item name="Guidepost" icon="presets/guidepost.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:information=guidepost"
+                  cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:information=guidepost"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:information=guidepost"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:information=guidepost"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:information=guidepost"
@@ -3813,35 +3829,6 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Horse Riding -->
-        <item name="Casino" icon="styles/standard/leisure/casino.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=casino"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=casino"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=casino"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=casino" />
-            <space />
-            <key key="amenity" value="casino" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <space />
-            <reference ref="internet_smoking" />
-            <space />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Casino -->
-        <item name="Brothel" icon="styles/standard/leisure/stripclub.png" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=brothel"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=brothel"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=brothel"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=brothel"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=brothel"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=brothel"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=brothel" />
-            <space />
-            <key key="amenity" value="brothel" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <space />
-            <reference ref="internet_smoking" />
-            <space />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Brothel -->
         <separator/>
         <item name="Playground" icon="styles/standard/leisure/playground.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=playground"
@@ -3922,6 +3909,68 @@
             <key key="leisure" value="swimming_pool" />
             <key key="access" value="private" />
         </item> <!-- Private Swimming Pool -->
+        <separator/>
+        <item name="Night Club" icon="styles/standard/leisure/discoball.svg" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nightclub"
+                  da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=nightclub"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=nightclub"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=nightclub"
+                  fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=nightclub"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=nightclub"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=nightclub"
+                  ro.href="http://wiki.openstreetmap.org/wiki/Ro:Tag:amenity=nightclub"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=nightclub" />
+            <space />
+            <key key="amenity" value="nightclub" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <space />
+            <reference ref="internet_smoking" />
+            <space />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Night Club -->
+        <item name="Casino" icon="styles/standard/leisure/casino.svg" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=casino"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=casino"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=casino"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=casino" />
+            <space />
+            <key key="amenity" value="casino" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <space />
+            <reference ref="internet_smoking" />
+            <space />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Casino -->
+        <item name="Strip Club" icon="styles/standard/leisure/nightclub.png" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=stripclub"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=stripclub"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=stripclub"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=stripclub"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=stripclub" />
+            <space />
+            <key key="amenity" value="stripclub" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <space />
+            <reference ref="internet_smoking" />
+            <space />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Strip Club -->
+        <item name="Brothel" icon="styles/standard/leisure/stripclub.png" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=brothel"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=brothel"
+                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=brothel"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=brothel"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=brothel"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=brothel"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=brothel" />
+            <space />
+            <key key="amenity" value="brothel" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <space />
+            <reference ref="internet_smoking" />
+            <space />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Brothel -->
     </group> <!-- Leisure -->
     <group name="Culture" icon="presets/theater.png">
         <item name="Museum" icon="styles/standard/sightseeing/museum.svg" type="node,closedway" preset_name_label="true">
@@ -3954,6 +4003,7 @@
         <item name="Library" icon="styles/standard/shop/library.png" type="node,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=library"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=library"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=library"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=library"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=library"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=library"
@@ -4305,6 +4355,7 @@
         <item name="Kindergarten" icon="presets/kindergarten.png" type="node,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=kindergarten"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=kindergarten"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=kindergarten"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=kindergarten"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=kindergarten"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=kindergarten"
@@ -4319,6 +4370,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=school"
                   ar.href="http://wiki.openstreetmap.org/wiki/Ar:Tag:amenity=school"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=school"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=school"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=school"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=school"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=school"
@@ -4335,6 +4387,7 @@
         <item name="University" icon="styles/standard/education/university.png" type="node,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=university"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=university"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=university"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=university"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=university"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=university"
@@ -4362,6 +4415,7 @@
          <item name="Driving School" icon="styles/standard/education/driving_school.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=driving_school"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=driving_school"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=driving_school"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=driving_school" />
             <space />
             <key key="amenity" value="driving_school" />
@@ -4529,9 +4583,14 @@
             <space />
             <key key="amenity" value="toilets" />
             <combo key="access" text="Access rights" values="public,permissive,customers" />
-            <combo key="drinking_water" text="Drinking Water" values="yes,no,seasonal" />
-            <combo key="toilets:disposal" text="Type" values="flush,pitlatrine,chemical,bucket" />
             <optional>
+                <checkgroup columns="3">
+                    <check key="female" text="Female" text_context="restroom" />
+                    <check key="male" text="Male" text_context="restroom" />
+                    <check key="unisex" text="Unisex" text_context="restroom" />
+                </checkgroup>
+                <combo key="toilets:disposal" text="Type" values="flush,pitlatrine,chemical,bucket" />
+                <combo key="drinking_water" text="Drinking Water" values="yes,no,seasonal" />
                 <text key="description" text="Description" />
                 <reference ref="fee" />
                 <text key="operator" text="Operator" />
@@ -4564,7 +4623,8 @@
             <key key="amenity" value="post_box" />
             <text key="operator" text="Operator" />
             <text key="ref" text="Reference number" />
-            <combo key="collection_times" text="Collection times" delimiter="|" values="Mo-Sa 09:00|Mo-Fr 17:30; Sa 12:00|Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30" />
+            <combo key="collection_times" text="Collection times" delimiter="|" values="Mo-Sa 09:00|Mo-Fr 17:30; Sa 12:00|Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30" values_no_i18n="true" />
+            <combo key="post_box:type" text="Type" values="pillar,lamp,wall,meter" values_context="post_box" />
             <check key="drive_through" text="Drive through" />
         </item> <!-- Post Box -->
         <item name="Telephone" icon="presets/telephone.png" type="node" preset_name_label="true">
@@ -4746,7 +4806,7 @@
             <combo key="access" text="Access" values="yes,public,customers,no" />
             <reference ref="fee" />
             <text key="operator" text="Operator" />
-            <combo key="opening_hours" text="Operation times" values="24/7" />
+            <combo key="opening_hours" text="Operation times" values="24/7" values_no_i18n="true" />
         </item> <!-- Sanitary Dump Station -->
         <separator/>
         <item name="Bench" icon="presets/bench.png" type="node,way" preset_name_label="true">
@@ -4801,6 +4861,7 @@
         <item name="Drinking Water" icon="styles/standard/food/drinking_water.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=drinking_water"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=drinking_water"
+                  el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=drinking_water"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=drinking_water"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=drinking_water"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:amenity=drinking_water"
@@ -4836,6 +4897,20 @@
             <combo key="fire_hydrant:pressure" text="Pressure (in bar)" values="5,6,8,suction" />
             <text key="fire_hydrant:count" text="Count" />
         </item> <!-- Fire Hydrant -->
+        <item name="Compressed Air" icon="styles/standard/vehicle/compressed_air.svg" type="node" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=compressed_air"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=compressed_air"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=compressed_air"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=compressed_air"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:amenity=compressed_air"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=compressed_air" />
+            <space />
+            <key key="amenity" value="compressed_air" />
+            <reference ref="name_ref" />
+            <text key="operator" text="Operator" />
+            <reference ref="fee" />
+            <multiselect key="valves" text="Valves" values="dunlop;schrader;sclaverand;regina" display_values="Dunlop (Woods);Schrader;Sclaverand (Presta);Regina" values_searchable="true" />
+        </item> <!-- Compressed Air -->
         <separator/>
         <item name="Advertising Column" icon="styles/standard/leisure/advertising_column.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=column"
@@ -5102,6 +5177,7 @@
         <item name="Soccer" icon="styles/standard/sport/soccer.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=soccer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=soccer"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=soccer"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:sport=soccer"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=soccer" />
             <space />
@@ -5314,7 +5390,8 @@
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Key:sport"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:sport"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:sport"
-                  tr.href="http://wiki.openstreetmap.org/wiki/Tr:Key:sport" />
+                  tr.href="http://wiki.openstreetmap.org/wiki/Tr:Key:sport"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:sport" />
             <space />
             <key key="sport" value="rc_car" />
             <text key="name" text="Name" />
@@ -5674,7 +5751,7 @@
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=street_lamp" />
             <space />
             <key key="highway" value="street_lamp" />
-            <combo key="opening_hours" text="Operation times" values="Mo-Fr 22:00-05:00" />
+            <combo key="opening_hours" text="Operation times" values="Mo-Fr 22:00-05:00" values_no_i18n="true" />
         </item> <!-- Street Lamp -->
         <item name="Monitoring Station" icon="presets/monitoring_station.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=monitoring_station"
@@ -5791,6 +5868,7 @@
         <item name="Bridge outline" icon="presets/bridge.png" type="closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=bridge"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=bridge"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=bridge"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:man_made=bridge" />
             <space />
             <key key="man_made" value="bridge" />
@@ -6596,6 +6674,7 @@
         </item> <!-- Clothes -->
         <item name="Boutique" icon="presets/boutique.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=boutique"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=boutique"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=boutique"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=boutique"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=boutique"
@@ -6963,33 +7042,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Ticket -->
     </group> <!-- Printed Material -->
-    <group name="Other" icon="styles/standard/shop/mall.png">
-        <item name="Department Store" icon="styles/standard/shop/mall.png" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=department_store"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=department_store"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=department_store"
-                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:shop=department_store"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=department_store"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=department_store"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=department_store" />
-            <space />
-            <key key="shop" value="department_store" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Department Store -->
-        <item name="Mall" icon="styles/standard/shop/mall.png" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=mall"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=mall"
-                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=mall"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=mall"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=mall"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=mall" />
-            <space />
-            <key key="shop" value="mall" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Mall -->
-        <separator/>
+    <group name="For the body" icon="styles/standard/shop/body.svg">
         <item name="Chemist" icon="styles/standard/shop/chemist.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=chemist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=chemist"
@@ -7052,6 +7105,7 @@
         </item> <!-- Optician -->
         <item name="Hearing Aids" icon="presets/hearing_aids.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hearing_aids"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hearing_aids"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=hearing_aids"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=hearing_aids" />
             <space />
@@ -7080,23 +7134,6 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Jewellery -->
-        <item name="Gift/Souvenir" icon="presets/present.svg" type="node,closedway" preset_name_label="true">
-            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=gift"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=gift"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=gift"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=gift"
-                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:shop=gift"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=gift"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=gift" />
-            <space />
-            <key key="shop" value="gift" />
-            <reference ref="name_operator_oh_wheelchair" />
-            <optional>
-                <combo key="religion" text="Religion" values="bahai,buddhist,christian,hindu,jain,jewish,muslim,sikh,spiritualist,taoist,unitarian,zoroastrian" />
-                <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,jehovahs_witness,lutheran,methodist,mormon,orthodox,pentecostal,presbyterian,protestant,quaker,shia,sunni" />
-            </optional>
-            <reference ref="link_contact_address_payment" />
-        </item> <!-- Gift/Souvenir -->
         <item name="Erotic" icon="presets/erotic.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=erotic"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=erotic"
@@ -7107,6 +7144,33 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Erotic -->
+    </group> <!-- For the body -->
+    <group name="Other" icon="styles/standard/shop/mall.png">
+        <item name="Department Store" icon="styles/standard/shop/mall.png" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=department_store"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=department_store"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=department_store"
+                  nl.href="http://wiki.openstreetmap.org/wiki/NL:Tag:shop=department_store"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=department_store"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=department_store"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=department_store" />
+            <space />
+            <key key="shop" value="department_store" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Department Store -->
+        <item name="Mall" icon="styles/standard/shop/mall.png" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=mall"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=mall"
+                  it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=mall"
+                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=mall"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=mall"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=mall" />
+            <space />
+            <key key="shop" value="mall" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Mall -->
         <separator/>
         <item name="Florist" icon="styles/standard/shop/florist.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=florist"
@@ -7201,6 +7265,23 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Toys -->
+        <item name="Gift/Souvenir" icon="presets/present.svg" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=gift"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=gift"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=gift"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=gift"
+                  ko.href="http://wiki.openstreetmap.org/wiki/Ko:Tag:shop=gift"
+                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=gift"
+                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=gift" />
+            <space />
+            <key key="shop" value="gift" />
+            <reference ref="name_operator_oh_wheelchair" />
+            <optional>
+                <combo key="religion" text="Religion" values="bahai,buddhist,christian,hindu,jain,jewish,muslim,sikh,spiritualist,taoist,unitarian,zoroastrian" />
+                <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,jehovahs_witness,lutheran,methodist,mormon,orthodox,pentecostal,presbyterian,protestant,quaker,shia,sunni" />
+            </optional>
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Gift/Souvenir -->
         <item name="Variety Store" icon="presets/variety_store.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=variety_store"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=variety_store"
@@ -7251,6 +7332,15 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Pet -->
+        <item name="Photo" icon="styles/standard/shop/photo.svg" type="node,closedway" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=photo"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=photo"
+                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=photo" />
+            <space />
+            <key key="shop" value="photo" />
+            <reference ref="name_oh_wheelchair" />
+            <reference ref="link_contact_address_payment" />
+        </item> <!-- Photo -->
         <item name="Funeral Directors" icon="styles/standard/shop/funeral_directors.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=funeral_directors"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=funeral_directors"
@@ -7580,6 +7670,7 @@
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=peak"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=peak"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=peak"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:natural=peak"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:natural=peak"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:natural=peak"
                   zh_TW.href="http://wiki.openstreetmap.org/wiki/Zh-hant:Tag:natural=peak" />
@@ -7975,6 +8066,7 @@
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=vineyard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=vineyard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=vineyard"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=vineyard"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:landuse=vineyard"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:landuse=vineyard" />
             <space />
@@ -8339,11 +8431,12 @@
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:addr"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Key:addr"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:addr"
+                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:addr"
                   vi.href="http://wiki.openstreetmap.org/wiki/Vi:Key:addr" />
             <space />
             <text key="addr:housenumber" text="House number" match="key" auto_increment="-2,-1,+1,+2" />
+            <text key="addr:street" text="Street name" use_last_as_default="force" match="key" alternative_autocomplete_keys="name" />
             <optional>
-                <text key="addr:street" text="Street name" use_last_as_default="force" match="key" alternative_autocomplete_keys="name" />
                 <text key="addr:place" text="Place name" use_last_as_default="force" match="key" alternative_autocomplete_keys="name" />
                 <text key="addr:city" text="City name" use_last_as_default="force" match="key" />
                 <text key="addr:postcode" text="Post code" use_last_as_default="force" match="key" />
@@ -8481,6 +8574,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:multipolygon"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:multipolygon"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:multipolygon"
+                  hu.href="http://wiki.openstreetmap.org/wiki/Hu:Relation:multipolygon"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Relation:multipolygon"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relation:multipolygon"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Relation:multipolygon"
@@ -8608,6 +8702,7 @@
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Mountain_biking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Mountain_biking"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Mountain_biking"
+                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Mountain_biking"
                   nl.href="http://wiki.openstreetmap.org/wiki/NL:Mountain_biking"
                   no.href="http://wiki.openstreetmap.org/wiki/No:Mountain_biking"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Mountain_biking" />
diff --git a/data/tagging-preset.xsd b/data/tagging-preset.xsd
index e8b7ca6..26d5002 100644
--- a/data/tagging-preset.xsd
+++ b/data/tagging-preset.xsd
@@ -203,6 +203,8 @@
 		<attribute name="values" type="string" />
 		<attribute name="values_from" type="string" />
 		<attribute name="values_context" type="string" />
+		<attribute name="values_no_i18n" type="boolean" />
+		<attribute name="values_sort" type="boolean" />
 		<attribute name="display_values" type="string" />
 		<attribute name="values_searchable" type="boolean" />
 		<attribute name="default" type="string" />
diff --git a/data/validator/combinations.mapcss b/data/validator/combinations.mapcss
index f0aa4db..de8ef0e 100644
--- a/data/validator/combinations.mapcss
+++ b/data/validator/combinations.mapcss
@@ -168,11 +168,11 @@ way[junction                   ][!highway][junction!=yes],
   throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.key}");
 }
 
-/* {0.tag} together with {1.key}, see #9389 */
-*[oneway=yes][/:backward/],
-*[oneway=yes][/:forward/],
-*[oneway=-1 ][/:backward/],
-*[oneway=-1 ][/:forward/] {
+/* {0.tag} together with {1.key}, see #9389, #11977 */
+*[oneway=yes][/:backward/][!"traffic_sign:backward"],
+*[oneway=yes][/:forward/][!"traffic_sign:forward"],
+*[oneway=-1 ][/:backward/][!"traffic_sign:backward"],
+*[oneway=-1 ][/:forward/][!"traffic_sign:forward"] {
   throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.key}");
 }
 
diff --git a/data_nodist/trans/es.lang b/data_nodist/trans/es.lang
index 9679f43..c4c918f 100644
Binary files a/data_nodist/trans/es.lang and b/data_nodist/trans/es.lang differ
diff --git a/data_nodist/trans/fi.lang b/data_nodist/trans/fi.lang
index 5b0b083..bc5df26 100644
Binary files a/data_nodist/trans/fi.lang and b/data_nodist/trans/fi.lang differ
diff --git a/i18n/convpreset.pl b/i18n/convpreset.pl
index 2c4c39a..3008336 100644
--- a/i18n/convpreset.pl
+++ b/i18n/convpreset.pl
@@ -140,6 +140,7 @@ while(my $line = <>)
     # display_values / values
     my $sp = ($line =~ /delimiter="(.*?)"/) ? $1 : ($type eq "combo" ? ",":";");
     my $vals = ($line =~ / display_values="(.*?)"/) ? $1 : ($line =~ /values="(.*?)"/) ? $1 : undef;
+    $vals = undef if ($line =~ /values_no_i18n="true"/);
     if($vals)
     {
       my @combo_values = split "\Q$sp\E" ,$vals;
diff --git a/i18n/po/af.po b/i18n/po/af.po
index 64512c6..a098520 100644
--- a/i18n/po/af.po
+++ b/i18n/po/af.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-10-13 02:39+0000\n"
 "Last-Translator: Grant Slater <Unknown>\n"
 "Language-Team: Afrikaans <af at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:31+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:31+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: af\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/am.po b/i18n/po/am.po
index 54a443a..9e799b7 100644
--- a/i18n/po/am.po
+++ b/i18n/po/am.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2010-03-30 12:09+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Amharic <am at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:32+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:32+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: am\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ar.po b/i18n/po/ar.po
index fb83317..51eb4b9 100644
--- a/i18n/po/ar.po
+++ b/i18n/po/ar.po
@@ -7,17 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-10-08 23:09+0000\n"
-"Last-Translator: mourad101e <mourad.les at gmail.com>\n"
+"Last-Translator: mourad101ee <mourad101ee at gmail.com>\n"
 "Language-Team: Arabic <ar at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
 "3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:32+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:32+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ar\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1381,6 +1381,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2099,17 +2108,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2521,6 +2524,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2542,6 +2551,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "لم أجد شيء مطابق لِــ ''{0}''"
 
@@ -4390,9 +4407,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "غير كامل"
 
@@ -7890,9 +7904,6 @@ msgstr ""
 msgid "Object"
 msgstr "الغرض"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8790,6 +8801,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8889,6 +8903,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10825,9 +10846,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11900,34 +11918,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "نوع غير معروف: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "مزيد من المعلومات عن هذه الميزة"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "role"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Error parsing {0}: "
+msgstr "خطأ في التحليل النحوي  {0}: "
+
+msgid "Search preset"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "ميزات خيارية:"
+msgid "Show preset search dialog"
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search presets"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Presets"
+msgstr "التعيينات المسبقة"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11958,52 +11994,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "نوع غير معروف: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "More information about this feature"
+msgstr "مزيد من المعلومات عن هذه الميزة"
 
-msgid "Preset role element without parent"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "ميزات خيارية:"
 
-msgid "Preset sub element without parent"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "خطأ في التحليل النحوي  {0}: "
-
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "التعيينات المسبقة"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12352,10 +12370,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14502,6 +14516,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14794,6 +14811,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14980,12 +15000,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15240,6 +15266,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15273,12 +15309,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15585,6 +15619,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15900,59 +15939,9 @@ msgstr "شركة الإدارة"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "أزقات الإفتتاح"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18439,6 +18428,33 @@ msgstr "نزل"
 msgid "Alpine Hut"
 msgstr "كوخ جبلي"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18550,12 +18566,6 @@ msgstr ""
 msgid "Bar"
 msgstr "حانة"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "سياحة"
 
@@ -18607,9 +18617,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18731,12 +18738,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "ملعب"
 
@@ -18768,6 +18769,18 @@ msgstr "صيد السمك"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19075,10 +19088,16 @@ msgstr "بيطري"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19108,24 +19127,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "صندوق بريد"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19419,6 +19426,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20106,9 +20131,6 @@ msgstr "منارة"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21244,10 +21266,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21274,10 +21293,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21304,6 +21326,9 @@ msgstr ""
 msgid "Toys"
 msgstr "ألعاب"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21319,6 +21344,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23235,9 +23263,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23531,9 +23556,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24188,13 +24210,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24820,6 +24835,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26253,12 +26344,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26274,6 +26371,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28733,6 +28833,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ast.po b/i18n/po/ast.po
index 180e5f2..5bff796 100644
--- a/i18n/po/ast.po
+++ b/i18n/po/ast.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-08-19 16:42+0000\n"
 "Last-Translator: Simon Legner <Unknown>\n"
 "Language-Team: Asturian <ast at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:33+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:33+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ast\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1476,6 +1476,15 @@ msgstr[1] ""
 "Hai más de una vía usando los nudos que seleicionasti. Por favor seleiciona "
 "tamién la vía."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [ID: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Tienes de seleicionar dos o más nudos pa partir una vía circular."
 
@@ -2253,17 +2262,11 @@ msgstr ""
 "Fai clic pa mover el nudu resaltáu. Caltén apretáu Ctrl p’amestar nudos "
 "nuevos o Alt pa desaniciar."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Nun pué asitiase un nudu fora''l mundu."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Amestar un nudu nuevu a la vía"
 msgstr[1] "Amestar un nudu nuevu a {0} víes"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Nun pué desaniciase’l nudu que fai referencia a dellos oxetos"
-
 msgid "Cannot delete node that has tags"
 msgstr "Nun pué desaniciase un nudu que tien etiquetes"
 
@@ -2712,6 +2715,12 @@ msgstr "tolos fíos de los oxetos coincidentes cola espresión"
 msgid "all parents of objects matching the expression"
 msgstr "tolos padres de los oxetos coincidentes cola espresión"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ésimu miembru de la rellación y/o n-ésimu nudu de la vía"
 
@@ -2737,6 +2746,14 @@ msgstr ""
 "oxetos (y tolos sos nudos de vía / miembros de la rellación) del área "
 "descargada"
 
+msgid "Searching"
+msgstr "Buscando"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Nun s`atoparon coincidencies pa \"{0}\""
 
@@ -4743,9 +4760,6 @@ msgstr "Nun amosar de nuevu (esta sesión)"
 msgid "Do not show again (remembers choice)"
 msgstr "Nun amosar otra vegada (esta operación)"
 
-msgid " [id: {0}]"
-msgstr " [ID: {0}]"
-
 msgid "incomplete"
 msgstr "incompletu"
 
@@ -8573,9 +8587,6 @@ msgstr "Relación {0}"
 msgid "Object"
 msgstr "Oxetu"
 
-msgid "not present"
-msgstr "non presente"
-
 msgid "Changeset comment"
 msgstr "Comentar conxuntu de cambeos"
 
@@ -9623,6 +9634,9 @@ msgstr "Escala de píxeles: {0}"
 msgid "Best zoom: {0}"
 msgstr "Meyor zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Estadístiques de caché: {0}"
 
@@ -9724,6 +9738,13 @@ msgstr "Marcador anterior"
 msgid "Jump to previous marker"
 msgstr "Saltar al marcador anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Toles proyecciones son compatibles"
 
@@ -11913,9 +11934,6 @@ msgstr "Directoriu del caxé de teseles: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -13086,35 +13104,53 @@ msgstr "Camudar Etiquetes"
 msgid "Add or remove toolbar button"
 msgstr "Amestar o esaniciar barra de ferramientes"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisitu desconocíu: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipu desconocíu: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Espresión de miembru illegal: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grupu predefinido {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Más información sobre esta característica"
+msgid "Preset group {0}"
+msgstr "Grupu predefiníu {0}"
 
-msgid "Available roles"
-msgstr "Roles disponibles"
+msgid "Reference {0} is being used before it was defined"
+msgstr "La referencia {0} ta siendo usada antes de ser definida"
 
-msgid "role"
-msgstr "rol"
+msgid "Roles cannot appear more than once"
+msgstr "Los roles nun pueden apaecer más d''una vegada"
 
-msgid "count"
-msgstr "cuenta"
+msgid "Preset role element without parent"
+msgstr "Rol preestablecíu ensin padre"
 
-msgid "elements"
-msgstr "elementos"
+msgid "Preset sub element without parent"
+msgstr "Subelementu preestablecíu ensin padre"
 
-msgid "Optional Attributes:"
-msgstr "Atributos opcionales:"
+msgid "Error parsing {0}: "
+msgstr "Erru analizando {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Escoyer un autoincremental de {0} pa esti campu"
+msgid "Search preset"
+msgstr "Buscar predefiníu"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Atayar l´autoincrementu d''esti campu"
+msgid "Show preset search dialog"
+msgstr "Amosar diálogu de busca preestablecía"
+
+msgid "Search presets"
+msgstr "Buscar predefiníos"
+
+msgid "Presets"
+msgstr "Axustes Predefiníos"
+
+msgid "Search for objects by preset"
+msgstr "Buscar oxetos per tipu predefiníu"
+
+msgid "Show only applicable to selection"
+msgstr "L''amuesa namá ye aplicable a la selección"
+
+msgid "Search in tags"
+msgstr "Buscar n''etiquetes"
+
+msgid "Add toolbar button"
+msgstr "Añedir botón de barra de ferramientes"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13154,53 +13190,35 @@ msgstr ""
 "Etiquetáu predetermináu rotu ''{0}-{1}'' - el númberu d''oxetos en "
 "''short_descriptions'' tien de coincidir con ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipu desconocíu: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grupu predefinido {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Grupu predefiníu {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "La referencia {0} ta siendo usada antes de ser definida"
-
-msgid "Roles cannot appear more than once"
-msgstr "Los roles nun pueden apaecer más d''una vegada"
-
-msgid "Preset role element without parent"
-msgstr "Rol preestablecíu ensin padre"
-
-msgid "Preset sub element without parent"
-msgstr "Subelementu preestablecíu ensin padre"
+msgid "More information about this feature"
+msgstr "Más información sobre esta característica"
 
-msgid "Error parsing {0}: "
-msgstr "Erru analizando {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributos opcionales:"
 
-msgid "Search preset"
-msgstr "Buscar predefiníu"
+msgid "Unknown requisite: {0}"
+msgstr "Requisitu desconocíu: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Amosar diálogu de busca preestablecía"
+msgid "Illegal member expression: {0}"
+msgstr "Espresión de miembru illegal: {0}"
 
-msgid "Search presets"
-msgstr "Buscar predefiníos"
+msgid "Available roles"
+msgstr "Roles disponibles"
 
-msgid "Presets"
-msgstr "Axustes Predefiníos"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
-msgstr "Buscar oxetos per tipu predefiníu"
+msgid "count"
+msgstr "cuenta"
 
-msgid "Show only applicable to selection"
-msgstr "L''amuesa namá ye aplicable a la selección"
+msgid "elements"
+msgstr "elementos"
 
-msgid "Search in tags"
-msgstr "Buscar n''etiquetes"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Escoyer un autoincremental de {0} pa esti campu"
 
-msgid "Add toolbar button"
-msgstr "Añedir botón de barra de ferramientes"
+msgid "Cancel auto-increment for this field"
+msgstr "Atayar l´autoincrementu d''esti campu"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13612,12 +13630,6 @@ msgstr "Mensaxe notificador"
 msgid "{0} not available (offline mode)"
 msgstr "{0} nun ta disponible (mou fora de llínea)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Nun hai primitiva col ID {0} nel conxuntu local de datos. Non puede inferise "
-"el tipu de primitiva."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Llogrando un conxuntu de nodos de ''{0}''"
 
@@ -16072,6 +16084,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16369,6 +16384,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16555,12 +16573,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16820,6 +16844,16 @@ msgstr ""
 "alredor del designáu como pivós."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16869,14 +16903,12 @@ msgstr ""
 "Implementa una llínea de comandos y dexa crear los tos comandos. Vea "
 "l''enllaz pa los comandos estándar (arcu, círculu, etc)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Peligru: ¡Esperimental!) Ferramienta pa fusionar (entemecer) datos."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Crea una cuadrícula de viales"
 
@@ -17260,6 +17292,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Crea edificios entremedianeras a partir de bloques únicos"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17596,62 +17633,9 @@ msgstr "Operador"
 msgid "Service Times"
 msgstr "Horarios del serviciu"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "riscar, atapecer"
-
-msgid "Su 09:30,11:00"
-msgstr "D 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "S,D,festivos 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "S 18:00; D 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Vi 08:00-18:00; Abr 10-15 off; Xun 07:00-20:00; Ago off; 24 Avi 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "S 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "selmana 1-53/2 V 09:00-12:00; selmana 2-52/2 Mi 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horariu d''apertura"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "S-D 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Ll-V 08:30-20:00; Sá,Do 08:00-15:00; festivos zarráu"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Ll-Vi 08:30-20:00, Ma-Xu 08:00-15:00; Sá 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Ll-D 08:00-18:00; 10- 15 Abril zarráu; Xunu 08:00-14:00; Agostu zarráu; 25 "
-"Avientu zarráu"
-
-msgid "sunrise-sunset"
-msgstr "riscar-atapecer"
-
-msgid "Su 10:00+"
-msgstr "D 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Sielles de ruedes"
 
@@ -20166,6 +20150,33 @@ msgstr "Albergue"
 msgid "Alpine Hut"
 msgstr "Cabaña alpina"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Permisos d''accesu"
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr "estacional"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Descripción detallada"
+
 msgid "Caravan Site/RV Park"
 msgstr "Sitiu de pernocte pa coches"
 
@@ -20277,12 +20288,6 @@ msgstr "Xardín Cerveceru"
 msgid "Bar"
 msgstr "Chigre"
 
-msgid "Night Club"
-msgstr "Club nocherniegu"
-
-msgid "Strip Club"
-msgstr "Club d''alterne (striptease)"
-
 msgid "Tourism"
 msgstr "Turismu"
 
@@ -20334,9 +20339,6 @@ msgstr "ciudá"
 msgid "region"
 msgstr "rexón"
 
-msgid "Closer Description"
-msgstr "Descripción detallada"
-
 msgid "Routes shown for:"
 msgstr "Rutes amosaes pa:"
 
@@ -20458,12 +20460,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Equitación"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Prostíbulu"
-
 msgid "Playground"
 msgstr "Zona de xuegos"
 
@@ -20495,6 +20491,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina privada"
 
+msgid "Night Club"
+msgstr "Club nocherniegu"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Club d''alterne (striptease)"
+
+msgid "Brothel"
+msgstr "Prostíbulu"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -20804,11 +20812,17 @@ msgstr "Veterinariu"
 msgid "Toilets/Restrooms"
 msgstr "Baños"
 
-msgid "Access rights"
-msgstr "Permisos d''accesu"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "estacional"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "cisterna (evacuación de refugayes con agua)"
@@ -20837,24 +20851,12 @@ msgstr "cuclielles"
 msgid "urinal"
 msgstr "urinariu"
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Buzón de correos"
 
 msgid "Collection times"
 msgstr "Horarios de recueya"
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -21148,6 +21150,24 @@ msgstr "succión"
 msgid "Count"
 msgstr "Cuenta"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -21835,9 +21855,6 @@ msgstr "Faru"
 msgid "Street Lamp"
 msgstr "Farola"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Llu-Vi 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Estación de monitorización"
 
@@ -22975,11 +22992,8 @@ msgstr "Puestu de periódicos"
 msgid "Ticket"
 msgstr "Boletu"
 
-msgid "Department Store"
-msgstr "Grandes almacenes"
-
-msgid "Mall"
-msgstr "Centru comercial"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Droguería"
@@ -23005,12 +23019,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr "Xoyes"
 
-msgid "Gift/Souvenir"
-msgstr "Regalo/alcordanza"
-
 msgid "Erotic"
 msgstr "Eróticu"
 
+msgid "Department Store"
+msgstr "Grandes almacenes"
+
+msgid "Mall"
+msgstr "Centru comercial"
+
 msgid "Florist"
 msgstr "Floristería"
 
@@ -23035,6 +23052,9 @@ msgstr "Instrumentos musicales"
 msgid "Toys"
 msgstr "Xuguetes"
 
+msgid "Gift/Souvenir"
+msgstr "Regalo/alcordanza"
+
 msgid "Variety Store"
 msgstr "Tienda de variedaes o bazar"
 
@@ -23050,6 +23070,9 @@ msgstr "Cartera"
 msgid "Pet"
 msgstr "Mascota"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -25022,9 +25045,6 @@ msgstr "Atopar y correxir direcciones ensin cais (válides)."
 msgid "Address Edit"
 msgstr "Editar direcciones"
 
-msgid "Searching"
-msgstr "Buscando"
-
 msgid "Guess values for "
 msgstr "Valores supuestos para "
 
@@ -25329,9 +25349,6 @@ msgstr "Previsualizar erru OSMI"
 msgid "Next OSMI bug"
 msgstr "Siguiente erru OSMI"
 
-msgid "Osm Inspector Bugs"
-msgstr "Erros de Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Erros de Osm Inspector"
 
@@ -26117,17 +26134,6 @@ msgid "Auto sourcing"
 msgstr "Dixitalización automática"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"El complementu Cadastre-fr utilizaba l''atayu F11 pa grabar,\n"
-"el cual agora ye utilizáu pa camudar al mou pantalla completa.\n"
-"El nuevu atayu ye F10, pero puede camudar l''atayu de tecláu\n"
-"nes preferencies si asina lu deseya."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26814,6 +26820,82 @@ msgstr "Selección vacida"
 msgid "Invalid reference or subject"
 msgstr "Referencia o suxetu inválidu"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Dirección"
 
@@ -28344,12 +28426,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -28365,6 +28453,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30973,6 +31064,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrace"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Nun pué asitiase un nudu fora''l mundu."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Navegar"
 
diff --git a/i18n/po/az.po b/i18n/po/az.po
index 48d8415..3063bde 100644
--- a/i18n/po/az.po
+++ b/i18n/po/az.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2013-01-12 17:56+0000\n"
 "Last-Translator: iAZISS <iss-sash at mail.ru>\n"
 "Language-Team: Azerbaijani <az at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:34+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:33+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1362,6 +1362,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2080,17 +2089,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2502,6 +2505,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2523,6 +2532,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4358,9 +4375,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7850,9 +7864,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8749,6 +8760,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8848,6 +8862,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10778,9 +10799,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11849,34 +11867,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11907,52 +11943,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12299,10 +12317,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14449,6 +14463,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14741,6 +14758,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14927,12 +14947,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15187,6 +15213,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15220,12 +15256,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15532,6 +15566,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15847,59 +15886,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18386,6 +18375,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18497,12 +18513,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18554,9 +18564,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18678,12 +18685,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18715,6 +18716,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19022,10 +19035,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19055,24 +19074,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19366,6 +19373,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20053,9 +20078,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21191,10 +21213,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21221,10 +21240,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21251,6 +21273,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21266,6 +21291,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23182,9 +23210,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23478,9 +23503,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24135,13 +24157,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24767,6 +24782,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26200,12 +26291,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26221,6 +26318,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28680,6 +28780,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/be.po b/i18n/po/be.po
index 845234c..4076d56 100644
--- a/i18n/po/be.po
+++ b/i18n/po/be.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-05 10:23+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 14:00+0000\n"
 "Last-Translator: Viktar Palstsiuk <Unknown>\n"
 "Language-Team: Belarusian <i18n at mova.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,8 +19,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:35+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:34+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: be\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1491,6 +1491,15 @@ msgstr[2] ""
 "Ёсць некалькі ліній, якія выкарыстоўваюць кропкі, якія вы вылучылі. Калі "
 "ласка, вылучыце лінію таксама."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Які сегмент лініі павінен пераняць гісторыю {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Сегмент {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Выберыце як-меней 2 кропкі каб падзяліць кругавую лінію"
 
@@ -2278,18 +2287,12 @@ msgstr ""
 "Клікніце, каб перамясціць вылучаную кропку. Ўтрымлівайце націснутай Ctrl для "
 "дадання новых кропак ці Alt для выдалення."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Не атрымоўваецца змясціць кропку за межамі свету"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Дадаць новую кропку да {0} лініі"
 msgstr[1] "Дадаць новую кропку да {0} ліній"
 msgstr[2] "Дадаць новую кропку да {0} ліній"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Немагчыма выдаліць кропку, што ўваходзіць у некалькі аб’ектаў"
-
 msgid "Cannot delete node that has tags"
 msgstr "Нельга выдаліць кропку, якая мае тэгі"
 
@@ -2568,7 +2571,7 @@ msgid "regular expression"
 msgstr "рэгулярны выраз"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS-селектар"
 
 msgid "add toolbar button"
 msgstr "дадаць кнопку на панэлі інструмэнтаў"
@@ -2744,6 +2747,12 @@ msgstr "усе даччыныя аб’екты адпаведныя выраз
 msgid "all parents of objects matching the expression"
 msgstr "усе бацькоўскія аб’екты адпаведныя выразу"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "адносіны, што змяшчаюць ўдзельніка з роляй <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "аб''екты, якія з''яўляюцца часткай адносін з роляй <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ы ўдзельнік адносін і/або n-ая кропка лініі"
 
@@ -2767,6 +2776,15 @@ msgstr "аб’екты ў запампаванай вобласці"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "аб’екты (і ўсе іх кропкі/ўдзельнікі адносін) у запампаванай вобласці"
 
+msgid "Searching"
+msgstr "Пошук"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Пошук у {0} аб''екце"
+msgstr[1] "Пошук у {0} аб''ектах"
+msgstr[2] "Пошук у {0} аб''ектах"
+
 msgid "No match found for ''{0}''"
 msgstr "Не знойдзена супадзенняў для ''{0}''"
 
@@ -2850,7 +2868,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Нечаканы маркер. Чакалася {0}, знойдзена {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Не атрымалася разабраць MapCSS-селектар"
 
 msgid "Unexpected token: {0}"
 msgstr "Нечаканая лексема: {0}"
@@ -4764,9 +4782,6 @@ msgstr "Не паказваць ізноў (у гэтым сеансе)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не паказваць ізноў (запомніць выбар)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "няпоўны"
 
@@ -8610,9 +8625,6 @@ msgstr "Адносіны {0}"
 msgid "Object"
 msgstr "Аб’ект"
 
-msgid "not present"
-msgstr "не існуе"
-
 msgid "Changeset comment"
 msgstr "Каментар да пакета правак"
 
@@ -9686,6 +9698,9 @@ msgstr "Маштаб піксела: {0}"
 msgid "Best zoom: {0}"
 msgstr "Найлепшы маштаб: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Прыблізны памера кэша: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Статыстыка кэша: {0}"
 
@@ -9789,6 +9804,17 @@ msgstr "Папярэдні маркер"
 msgid "Jump to previous marker"
 msgstr "Да папярэдняга маркера"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Для дадання яшчэ аднаго пласта неабходна выдзяліць JOSM не менш за "
+"{0,number,#}МБ памяці з дапамогай параметру -Xmx{0,number,#}M (гл. "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Зараз JOSM выдзелена {1,number,#}МБ"
+
 msgid "All projections are supported"
 msgstr "Усе праекцыі падтрымліваюцца"
 
@@ -11941,9 +11967,6 @@ msgstr "Каталог кэша квадратаў: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Максімальны памер дыскавага кэша (для здымка) у МБ: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Максімальная колькасць аб''ектаў у кэшы памяці: "
-
 msgid "Tiles zoom offset:"
 msgstr "Зрушэнне маштабу тайлаў:"
 
@@ -13097,6 +13120,7 @@ msgstr "Немагчыма ўжыць нарыхтоўку <i>{0}</i>, бо ні
 msgid ""
 "The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 msgstr ""
+"Немагчыма прымяніць нарыхтоўку <i>{0}</i>, бо вылучаныя непрыдатныя аб''екты!"
 
 msgid "Change {0} object"
 msgid_plural "Change {0} objects"
@@ -13116,35 +13140,53 @@ msgstr "Змяніць тэгі"
 msgid "Add or remove toolbar button"
 msgstr "Дадаць ці выдаліць кнопку панэлі прылад"
 
-msgid "Unknown requisite: {0}"
-msgstr "Невядомы запыт: {0}"
+msgid "Unknown type: {0}"
+msgstr "Невядомы тып: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Недапушчальны выраз у {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Група нарыхтовак {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Падрабязней"
+msgid "Preset group {0}"
+msgstr "Група нарыхтовак {0}"
 
-msgid "Available roles"
-msgstr "Даступныя ролі"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Адносіны {0} былі выкарыстаны перш чым былі апісаны"
 
-msgid "role"
-msgstr "роля"
+msgid "Roles cannot appear more than once"
+msgstr "Ролі не могуць з’яўляцца больш аднаго разу"
 
-msgid "count"
-msgstr "колькасць"
+msgid "Preset role element without parent"
+msgstr "Нарыхтоўка элемента ролі без бацькоў"
 
-msgid "elements"
-msgstr "элементы"
+msgid "Preset sub element without parent"
+msgstr "Нарыхтоўка ўкладзенага элемента без бацькоў"
 
-msgid "Optional Attributes:"
-msgstr "Дадатковыя атрыбуты:"
+msgid "Error parsing {0}: "
+msgstr "Памылка пры разборы {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Выберыце аўта-павелічэнне {0} для гэтага поля"
+msgid "Search preset"
+msgstr "Знайсці нарыхтоўку..."
 
-msgid "Cancel auto-increment for this field"
-msgstr "Адмяніць аўта-павелічэнне для гэтага поля"
+msgid "Show preset search dialog"
+msgstr "Паказаць дыялог пошуку нарыхтовак"
+
+msgid "Search presets"
+msgstr "Пошук нарыхтовак"
+
+msgid "Presets"
+msgstr "Нарыхтоўкі"
+
+msgid "Search for objects by preset"
+msgstr "Пошук аб’ектаў па нарыхтоўцы"
+
+msgid "Show only applicable to selection"
+msgstr "Паказваць толькі падыходныя да вылучаных"
+
+msgid "Search in tags"
+msgstr "Пошук у тэгах"
+
+msgid "Add toolbar button"
+msgstr "Дадаць кнопку на панэль прылад"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13184,53 +13226,35 @@ msgstr ""
 "Сапсаваная нарыхтоўка тэгаў \"{0}-{1}\" - колькасць элементаў у "
 "''short_descriptions'' павінна быць такім жа, як і ў ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Невядомы тып: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Група нарыхтовак {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Група нарыхтовак {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Адносіны {0} былі выкарыстаны перш чым былі апісаны"
-
-msgid "Roles cannot appear more than once"
-msgstr "Ролі не могуць з’яўляцца больш аднаго разу"
-
-msgid "Preset role element without parent"
-msgstr "Нарыхтоўка элемента ролі без бацькоў"
-
-msgid "Preset sub element without parent"
-msgstr "Нарыхтоўка ўкладзенага элемента без бацькоў"
+msgid "More information about this feature"
+msgstr "Падрабязней"
 
-msgid "Error parsing {0}: "
-msgstr "Памылка пры разборы {0}: "
+msgid "Optional Attributes:"
+msgstr "Дадатковыя атрыбуты:"
 
-msgid "Search preset"
-msgstr "Знайсці нарыхтоўку..."
+msgid "Unknown requisite: {0}"
+msgstr "Невядомы запыт: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Паказаць дыялог пошуку нарыхтовак"
+msgid "Illegal member expression: {0}"
+msgstr "Недапушчальны выраз у {0}"
 
-msgid "Search presets"
-msgstr "Пошук нарыхтовак"
+msgid "Available roles"
+msgstr "Даступныя ролі"
 
-msgid "Presets"
-msgstr "Нарыхтоўкі"
+msgid "role"
+msgstr "роля"
 
-msgid "Search for objects by preset"
-msgstr "Пошук аб’ектаў па нарыхтоўцы"
+msgid "count"
+msgstr "колькасць"
 
-msgid "Show only applicable to selection"
-msgstr "Паказваць толькі падыходныя да вылучаных"
+msgid "elements"
+msgstr "элементы"
 
-msgid "Search in tags"
-msgstr "Пошук у тэгах"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Выберыце аўта-павелічэнне {0} для гэтага поля"
 
-msgid "Add toolbar button"
-msgstr "Дадаць кнопку на панэль прылад"
+msgid "Cancel auto-increment for this field"
+msgstr "Адмяніць аўта-павелічэнне для гэтага поля"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13521,7 +13545,7 @@ msgid "GeoJSON Files"
 msgstr "Файлы GeoJSON"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Файлы Projected GeoJSON"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Пласт «{0}» не падтрымліваецца"
@@ -13632,12 +13656,6 @@ msgstr "Паведамленні"
 msgid "{0} not available (offline mode)"
 msgstr "{0} недаступны (аўтаномны рэжым)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Няма элементаў з  id {0} у мясцовай базе дадзеных. Немагчыма вывесці тып "
-"элемента."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Выбарка пакета кропак з ''{0}''"
 
@@ -16003,7 +16021,7 @@ msgid "SPW(allonie) 2009 aerial imagery"
 msgstr "SPW (allonie) 2009 аэрафотаздымкі"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
-msgstr ""
+msgstr "кадастр:  толькі для назваў і нумароў дамоў, недакладная геаметрыя"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Карта гарадскіх раёнаў"
@@ -16134,6 +16152,9 @@ msgstr "Тулуза - артафотаплан 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Тур - артафота 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Тур - артафота 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16428,6 +16449,9 @@ msgstr "Забжэ: артафота 2011"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: шляхі"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Вроцлаў: артафота 2015 (аэрафотаздымкі)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16614,12 +16638,18 @@ msgstr "Сурэй, аэраздымкі"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-цалевая карта Шатландыі 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - ОС 1:25000 1-й серыі 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - АС 1-цалевая 7-й серыі 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25000 гістарычная (OSM-Best)"
 
@@ -16878,6 +16908,21 @@ msgstr ""
 "абранага цэнтра."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Забяспечвае бібліятэчныя кампаненты Apache Commons. Прызначаны не для "
+"непасрэднай ўстаноўкі карыстальнікам, а толькі як залежнасць для іншых "
+"модуляў."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Забяспечвае бібліятэку Apache HTTP. Прызначаны не для непасрэднай ўстаноўкі "
+"карыстальнікам, а толькі як залежнасць для іншых модуляў."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16924,19 +16969,14 @@ msgstr ""
 "Перайдзіце па спасылцы, каб азнаёміцца са стандартнымі камандамі (arc, "
 "circle і г.д.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Прадастаўляе бібліятэку Commons Imaging. Не прызначаны для непасрэднага "
-"ўстанаўлення карыстальнікамі, усталёўваецца толькі як залежнасць для іншых "
-"модуляў."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Увага: Эксперыментальная версія!) Інструмент для аб’яднання (зліцця) "
 "дадзеных."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Стварае сетку з ліній."
 
@@ -17322,6 +17362,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Зрабіць шэраг дамоў уздоўж вуліцы з аднаго блока."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Інтэгруе to-fix (http://osmlab.github.io/to-fix/) у JOSM для выпраўлення "
+"памылак у OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17656,61 +17703,9 @@ msgstr "Аператар"
 msgid "Service Times"
 msgstr "Час абслугоўвання"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "заход,узыход"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Гадзіны працы"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "з узыходу да заходу"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Інвалідныя каляскі"
 
@@ -20227,6 +20222,33 @@ msgstr "Хостэл"
 msgid "Alpine Hut"
 msgstr "Горная хаціна"
 
+msgid "Wilderness Hut"
+msgstr "Хата на хутары"
+
+msgid "Access rights"
+msgstr "Правы доступу"
+
+msgid "Shower"
+msgstr "Душ"
+
+msgid "seasonal"
+msgstr "у залежнасці ад сезону"
+
+msgid "Reservation"
+msgstr "Рэзерваванне"
+
+msgid "required"
+msgstr "неабходна"
+
+msgid "recommended"
+msgstr "рэкамендуецца"
+
+msgid "members_only"
+msgstr "толькі для чальцоў арганізацыі"
+
+msgid "Closer Description"
+msgstr "Падрабязнае апісанне"
+
 msgid "Caravan Site/RV Park"
 msgstr "Кемпінг для хат на колах"
 
@@ -20338,12 +20360,6 @@ msgstr "Піўны сад"
 msgid "Bar"
 msgstr "Бар"
 
-msgid "Night Club"
-msgstr "Начны клуб"
-
-msgid "Strip Club"
-msgstr "Стрып-клуб"
-
 msgid "Tourism"
 msgstr "Турызм"
 
@@ -20395,9 +20411,6 @@ msgstr "горад"
 msgid "region"
 msgstr "рэгіён"
 
-msgid "Closer Description"
-msgstr "Падрабязнае апісанне"
-
 msgid "Routes shown for:"
 msgstr "Паказаны маршруты:"
 
@@ -20519,12 +20532,6 @@ msgstr "Сауна"
 msgid "Horse Riding"
 msgstr "Верхавая язда"
 
-msgid "Casino"
-msgstr "Казіно"
-
-msgid "Brothel"
-msgstr "Бардэль"
-
 msgid "Playground"
 msgstr "Гульнявая пляцоўка"
 
@@ -20556,6 +20563,18 @@ msgstr "Месца для рыбалкі"
 msgid "Private Swimming Pool"
 msgstr "Прыватны плавальны басейн"
 
+msgid "Night Club"
+msgstr "Начны клуб"
+
+msgid "Casino"
+msgstr "Казіно"
+
+msgid "Strip Club"
+msgstr "Стрып-клуб"
+
+msgid "Brothel"
+msgstr "Бардэль"
+
 msgid "Culture"
 msgstr "Культура"
 
@@ -20863,11 +20882,17 @@ msgstr "Ветэрынарыя"
 msgid "Toilets/Restrooms"
 msgstr "Грамадскі туалет"
 
-msgid "Access rights"
-msgstr "Правы доступу"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Жаночы"
 
-msgid "seasonal"
-msgstr "у залежнасці ад сезону"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Мужчынскі"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Абодва полы"
 
 msgid "flush"
 msgstr "са злівам"
@@ -20896,39 +20921,27 @@ msgstr "падлогавы ўнітаз"
 msgid "urinal"
 msgstr "пісуар"
 
-msgid "Shower"
-msgstr "Душ"
-
 msgid "Post Box"
 msgstr "Паштовая скрыня"
 
 msgid "Collection times"
 msgstr "Час вымання лістоў"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "на слупе"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "на лямпе"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "на сцяне"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "на паркамаце"
 
 msgid "Drive through"
 msgstr "Даступны не выходзячы з аўтамабіля"
@@ -21207,6 +21220,24 @@ msgstr "усмоктванне"
 msgid "Count"
 msgstr "Колькасць"
 
+msgid "Compressed Air"
+msgstr "Кампрэсар для шын"
+
+msgid "Valves"
+msgstr "Тыпы клапана"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Клапан Шрадэра"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Рэгіна"
+
 msgid "Advertising Column"
 msgstr "Рэкламная тумба"
 
@@ -21894,9 +21925,6 @@ msgstr "Маяк"
 msgid "Street Lamp"
 msgstr "Вулічны ліхтар"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Станцыя назірання"
 
@@ -23034,11 +23062,8 @@ msgstr "Газетны шапік"
 msgid "Ticket"
 msgstr "Білетная каса"
 
-msgid "Department Store"
-msgstr "Універмаг"
-
-msgid "Mall"
-msgstr "Буйны гандлёвы цэнтр"
+msgid "For the body"
+msgstr "Для цела"
 
 msgid "Chemist"
 msgstr "Побытавая хімія"
@@ -23064,12 +23089,15 @@ msgstr "Медыцынскае прыладдзе"
 msgid "Jewellery"
 msgstr "Ювелірная крама"
 
-msgid "Gift/Souvenir"
-msgstr "Падарункі і сувеніры"
-
 msgid "Erotic"
 msgstr "Сэкс-шоп"
 
+msgid "Department Store"
+msgstr "Універмаг"
+
+msgid "Mall"
+msgstr "Буйны гандлёвы цэнтр"
+
 msgid "Florist"
 msgstr "Кветкавая крама"
 
@@ -23094,6 +23122,9 @@ msgstr "Музычныя інструменты"
 msgid "Toys"
 msgstr "Цацкі"
 
+msgid "Gift/Souvenir"
+msgstr "Падарункі і сувеніры"
+
 msgid "Variety Store"
 msgstr "Універсальная крама"
 
@@ -23109,6 +23140,9 @@ msgstr "Торбы і валізкі"
 msgid "Pet"
 msgstr "Тавары для жывёл"
 
+msgid "Photo"
+msgstr "Фота"
+
 msgid "Funeral Directors"
 msgstr "Рытуальныя паслугі"
 
@@ -25093,9 +25127,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr "Рэдагаваць адрас"
 
-msgid "Searching"
-msgstr "Пошук"
-
 msgid "Guess values for "
 msgstr "Адгадаць значэнне "
 
@@ -25396,9 +25427,6 @@ msgstr "Папярэдняя памылка (OSMI)"
 msgid "Next OSMI bug"
 msgstr "Наступная памылка (OSMI)"
 
-msgid "Osm Inspector Bugs"
-msgstr "Памылкі з Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Інспектар памылак (OSMI)"
 
@@ -26188,17 +26216,6 @@ msgid "Auto sourcing"
 msgstr "Аўта крыніцы"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Модуль cadastre-fr выкарыстоўваў для захопу клавішу F11,\n"
-"якая цяпер прызначана для пераключэння ў поўнаэкранны рэжым.\n"
-"Новая клавіша захопу — F10, але пры жаданні яе можна змяніць\n"
-"у наладах Гарачых клавіш."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26875,6 +26892,82 @@ msgstr "Нічога не вылучана"
 msgid "Invalid reference or subject"
 msgstr "Няслушны аб''ект даведкавага або мэтавага пласта"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Адрас"
 
@@ -28388,12 +28481,18 @@ msgstr "Месяцы"
 msgid "Days"
 msgstr "Дні"
 
+msgid "Imported images"
+msgstr "Імпартаваныя выявы"
+
 msgid "Mapillary filter"
 msgstr "Фільтр Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Адкрыць дыялог фільтра Mapillary"
 
+msgid "Not older than: "
+msgstr "Не старэйшыя за: "
+
 msgid "Downloaded images"
 msgstr "Загружаныя здымкі"
 
@@ -28409,6 +28508,9 @@ msgstr "Гісторыя Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Адкрыць дыялог гісторыі Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Здымак Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Адкрыць акно Mapillary"
 
@@ -30998,6 +31100,64 @@ msgstr ""
 msgid "Terrace"
 msgstr "Шэраг хат уздоўж вуліцы"
 
+msgid "To-fix"
+msgstr "To-fix"
+
+msgid "Open to-fix window."
+msgstr "Адкрыць акно to-fix."
+
+msgid "Tool:To-fix"
+msgstr "Інструмент: To-fix"
+
+msgid "Skip"
+msgstr "Прапусціць"
+
+msgid "Skip Error"
+msgstr "Прапусціць памылку"
+
+msgid "Fixed"
+msgstr "Выпраўлена"
+
+msgid "Fixed Error"
+msgstr "Памылка выпраўлена"
+
+msgid "Not an error"
+msgstr "Не памылка"
+
+msgid "Set download area (m²)"
+msgstr "Задайце вобласць запампоўкі (м²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "tofix:Прапусціць элемент"
+
+msgid "tofix:Fixed item"
+msgstr "tofix:Выпраўлены элемент"
+
+msgid "tofix:Not a Error item"
+msgstr "tofix:Не памылковы элемент"
+
+msgid "Maintenance server"
+msgstr "Сервер на абслугоўванні"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Нешта пайшло не так, абнавіце модуль або паведаміце пра памылку на <a "
+"href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Нешта пайшло не так, паспрабуйце яшчэ раз"
+
+msgid "Cannot place a node outside of the world."
+msgstr "Не атрымоўваецца змясціць кропку за межамі свету"
+
+msgid "Layer to draw OSM error"
+msgstr "Пласт для адлюстравання памылак OSM"
+
 msgid "Browse"
 msgstr "Прагляд"
 
diff --git a/i18n/po/bg.po b/i18n/po/bg.po
index e7b3956..c926053 100644
--- a/i18n/po/bg.po
+++ b/i18n/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-08-17 01:50+0000\n"
 "Last-Translator: pl <Unknown>\n"
 "Language-Team: Bulgarian <bg at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:37+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:36+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: bg\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1436,6 +1436,15 @@ msgstr[1] ""
 "Съществува повече от един път използващи точките, която сте избрали. Моля "
 "изберете и пътя."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Трябва да изберете две или повече точки за да разделите затворен (кръгов) "
@@ -2174,17 +2183,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Добавяне на нова точка към път"
 msgstr[1] "Добавяне на нова точка към {0} пътя"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr "Невъзможно е изтриването на точка, която има тагове"
 
@@ -2617,6 +2620,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-тия член на релация и/или  n-тата точка на път"
 
@@ -2638,6 +2647,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Не е намерено съвпадение за ''{0}''"
 
@@ -4515,9 +4532,6 @@ msgstr "Не показвай отново (за тази сесия)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показвай отново (запомни избора)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "непълен"
 
@@ -8015,9 +8029,6 @@ msgstr "Връзка {0}"
 msgid "Object"
 msgstr "Обект"
 
-msgid "not present"
-msgstr "не съществува"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8943,6 +8954,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9042,6 +9056,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -11033,9 +11054,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12107,34 +12125,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Неизвестен тип: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Повече информация за тази възможност"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "role"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Error parsing {0}: "
+msgstr "Грешка при разбор {0}: "
+
+msgid "Search preset"
+msgstr "Търсене"
+
+msgid "Show preset search dialog"
+msgstr "Извежда допълнителен екран за търсене"
+
+msgid "Search presets"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Незадължителни Атрибути:"
+msgid "Presets"
+msgstr "Шаблони"
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search for objects by preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr "Търсене в етикетите"
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12165,52 +12201,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Неизвестен тип: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Повече информация за тази възможност"
 
-msgid "Preset group {0}"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Незадължителни Атрибути:"
 
-msgid "Reference {0} is being used before it was defined"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Roles cannot appear more than once"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Preset role element without parent"
+msgid "Available roles"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "role"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Грешка при разбор {0}: "
-
-msgid "Search preset"
-msgstr "Търсене"
-
-msgid "Show preset search dialog"
-msgstr "Извежда допълнителен екран за търсене"
-
-msgid "Search presets"
+msgid "count"
 msgstr ""
 
-msgid "Presets"
-msgstr "Шаблони"
-
-msgid "Search for objects by preset"
+msgid "elements"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Search in tags"
-msgstr "Търсене в етикетите"
-
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12563,10 +12581,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Сваляне на група възли от ''{0}''"
 
@@ -14733,6 +14747,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15029,6 +15046,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -15215,12 +15235,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -15475,6 +15501,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15508,12 +15544,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15839,6 +15873,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Създава терасовидни къщи от един блок."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16154,61 +16193,9 @@ msgstr "Оператор"
 msgid "Service Times"
 msgstr "Работно време"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Работно време"
 
-msgid "24/7"
-msgstr "денонощно"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Инвалидна количка"
 
@@ -18695,6 +18682,33 @@ msgstr "Хостел / студентско общежитие"
 msgid "Alpine Hut"
 msgstr "Планинска хижа"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr "Душове"
+
+msgid "seasonal"
+msgstr "сезонен"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "По-подробно описание"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18806,12 +18820,6 @@ msgstr "Бирария"
 msgid "Bar"
 msgstr "Бар"
 
-msgid "Night Club"
-msgstr "Нощен клуб"
-
-msgid "Strip Club"
-msgstr "Стриптийз бар"
-
 msgid "Tourism"
 msgstr "Туризъм"
 
@@ -18863,9 +18871,6 @@ msgstr "град"
 msgid "region"
 msgstr "район"
 
-msgid "Closer Description"
-msgstr "По-подробно описание"
-
 msgid "Routes shown for:"
 msgstr "Показани са пътища за:"
 
@@ -18987,12 +18992,6 @@ msgstr "Сауна"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Площадка"
 
@@ -19024,6 +19023,18 @@ msgstr "Риболов"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr "Нощен клуб"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Стриптийз бар"
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr "Култура"
 
@@ -19331,11 +19342,17 @@ msgstr "Ветеринар"
 msgid "Toilets/Restrooms"
 msgstr "Тоалетни"
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
-msgstr "сезонен"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr ""
@@ -19364,24 +19381,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr "Душове"
-
 msgid "Post Box"
 msgstr "Пощенска кутия"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19675,6 +19680,24 @@ msgstr ""
 msgid "Count"
 msgstr "Брой"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20362,9 +20385,6 @@ msgstr "Маяк / Светлинен фар"
 msgid "Street Lamp"
 msgstr "Улична лампа"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Станция за наблюдение (мониторинг)"
 
@@ -21500,12 +21520,9 @@ msgstr "Вестници и списания"
 msgid "Ticket"
 msgstr "Билети"
 
-msgid "Department Store"
+msgid "For the body"
 msgstr ""
 
-msgid "Mall"
-msgstr "Мол"
-
 msgid "Chemist"
 msgstr "Аптека"
 
@@ -21530,12 +21547,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr "Сувенири"
-
 msgid "Erotic"
 msgstr "Еротичен магазин"
 
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
+msgstr "Мол"
+
 msgid "Florist"
 msgstr "Цветарски магазин"
 
@@ -21560,6 +21580,9 @@ msgstr "Музикални инструменти"
 msgid "Toys"
 msgstr "Играчки"
 
+msgid "Gift/Souvenir"
+msgstr "Сувенири"
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21575,6 +21598,9 @@ msgstr ""
 msgid "Pet"
 msgstr "Домашни любимци"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Погребално бюро"
 
@@ -23495,9 +23521,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23791,9 +23814,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24448,13 +24468,6 @@ msgid "Auto sourcing"
 msgstr "Авто-определяне източници"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25101,6 +25114,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26553,12 +26642,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26574,6 +26669,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29046,6 +29144,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Разделяне на сграда"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/bn.po b/i18n/po/bn.po
index 17579ed..b912c03 100644
--- a/i18n/po/bn.po
+++ b/i18n/po/bn.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-04-03 09:24+0000\n"
 "Last-Translator: Md Alamgir <alamgircu at hotmail.com>\n"
 "Language-Team: Bengali <bn at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:35+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:35+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: bn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1366,6 +1366,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2084,17 +2093,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2506,6 +2509,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2527,6 +2536,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4362,9 +4379,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7854,9 +7868,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8753,6 +8764,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8852,6 +8866,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10782,9 +10803,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11853,34 +11871,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11911,52 +11947,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12303,10 +12321,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14453,6 +14467,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14745,6 +14762,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14931,12 +14951,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15191,6 +15217,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15224,12 +15260,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15536,6 +15570,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15851,59 +15890,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18390,6 +18379,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18501,12 +18517,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18558,9 +18568,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18682,12 +18689,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18719,6 +18720,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19026,10 +19039,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19059,24 +19078,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19370,6 +19377,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20057,9 +20082,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21195,10 +21217,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21225,10 +21244,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21255,6 +21277,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21270,6 +21295,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23186,9 +23214,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23482,9 +23507,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24139,13 +24161,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24771,6 +24786,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26204,12 +26295,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26225,6 +26322,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28684,6 +28784,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/br.po b/i18n/po/br.po
index da1da30..880ed83 100644
--- a/i18n/po/br.po
+++ b/i18n/po/br.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-10-17 12:11+0000\n"
 "Last-Translator: Fulup <Unknown>\n"
 "Language-Team: Breton <br at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:36+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:36+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: br\n"
 
 msgid "License"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/bs.po b/i18n/po/bs.po
index 8000124..4c920ee 100644
--- a/i18n/po/bs.po
+++ b/i18n/po/bs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-11-03 23:07+0000\n"
 "Last-Translator: Alen Mahovic <eyeofthestorm at windowslive.com>\n"
 "Language-Team: Bosnian <bs at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:36+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:35+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: bs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1366,6 +1366,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2084,17 +2093,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2506,6 +2509,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2527,6 +2536,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4362,9 +4379,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7854,9 +7868,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8753,6 +8764,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8852,6 +8866,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10782,9 +10803,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11853,34 +11871,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11911,52 +11947,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12303,10 +12321,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14453,6 +14467,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14745,6 +14762,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14931,12 +14951,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15191,6 +15217,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15224,12 +15260,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15536,6 +15570,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15851,59 +15890,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18390,6 +18379,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18501,12 +18517,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18558,9 +18568,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18682,12 +18689,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18719,6 +18720,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19026,10 +19039,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19059,24 +19078,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19370,6 +19377,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20057,9 +20082,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21195,10 +21217,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21225,10 +21244,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21255,6 +21277,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21270,6 +21295,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23186,9 +23214,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23482,9 +23507,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24139,13 +24161,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24771,6 +24786,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26204,12 +26295,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26225,6 +26322,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28684,6 +28784,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ca.po b/i18n/po/ca.po
index 29e37a9..1d79818 100644
--- a/i18n/po/ca.po
+++ b/i18n/po/ca.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-06 12:46+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 13:54+0000\n"
 "Last-Translator: pitort <pitort at eclipso.eu>\n"
 "Language-Team: el_libre - - www.catmidia.cat\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:37+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:36+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ca\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1484,6 +1484,15 @@ msgstr[1] ""
 "Hi ha 2 o més vies que usen els nodes seleccionats. Seleccioneu també la via "
 "adient."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Quin segment de la via ha de reutilitzar l''historial de {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segment {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Heu de seleccionar dos o més nodes per poder dividir una via tancada."
@@ -2276,17 +2285,11 @@ msgstr ""
 "Feu clic per mour el node ressaltat. Premeu la tecla Ctrl per a afegir nodes "
 "o la tecla Alt per suprimir-ne."
 
-msgid "Cannot place a node outside of the world."
-msgstr "No és possible de posar un node fora del Món."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Afegeix un nou node a la via"
 msgstr[1] "Afegeix un nou node a {0} vies"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "No es pot esborrar un node que fa referència a múltiples objectes"
-
 msgid "Cannot delete node that has tags"
 msgstr "No és possible d''eliminar un node amb atributs"
 
@@ -2736,6 +2739,12 @@ msgstr "tots els fills dels objectes que acompleixin l''expressió"
 msgid "all parents of objects matching the expression"
 msgstr "tots els parents dels objectes que acompleixin l''expressió"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relació que conté un member del rol <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objectes que són part d''una relació amb el rol <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-èsim membre de la relació i/o n-èsim node de la via"
 
@@ -2759,6 +2768,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objectes (i tots els seus nodes / membres de relació) a la zona telecarregada"
 
+msgid "Searching"
+msgstr "Cercant"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Cercant en {0} objecte"
+msgstr[1] "cercant en {0} objectes"
+
 msgid "No match found for ''{0}''"
 msgstr "No s''ha trobat cap resultat per ''{0}''"
 
@@ -4783,9 +4800,6 @@ msgstr "No ho tornis a mostrar (aquesta sessió)"
 msgid "Do not show again (remembers choice)"
 msgstr "No tornar a mostrar (recordar selecció)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incomplet"
 
@@ -8637,9 +8651,6 @@ msgstr "Relació {0}"
 msgid "Object"
 msgstr "Objecte"
 
-msgid "not present"
-msgstr "No present"
-
 msgid "Changeset comment"
 msgstr "Comentari del conjunt de canvis"
 
@@ -9682,6 +9693,9 @@ msgstr "Escala de píxel: {0}"
 msgid "Best zoom: {0}"
 msgstr "Millor ampliació: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Mida estimada de la memòria cau: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Estats memòria cau: {0}"
 
@@ -9783,6 +9797,13 @@ msgstr "Marcador anterior"
 msgid "Jump to previous marker"
 msgstr "Anar al marcador anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Se suporten totes les projeccions"
 
@@ -11983,9 +12004,6 @@ msgstr "Directori de la memòria cau de tessel·les: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Màxima ocupació a disc de la memòria cau (per la imargeria) en MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Nombre màxim d''objectes a la memòria cau: "
-
 msgid "Tiles zoom offset:"
 msgstr "Desplazament de l''ampliació de les tessel·les:"
 
@@ -13165,35 +13183,53 @@ msgstr "Canvia les etiquetes"
 msgid "Add or remove toolbar button"
 msgstr "Afegeix o suprimeix el botó de la barra d''eines"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisit desconegut: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipus desconegut: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Expressió de membre incorrecta: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grup de preconfiguracions {1}/{0}"
 
-msgid "More information about this feature"
-msgstr "Més informació sobre aquesta funcionalitat"
+msgid "Preset group {0}"
+msgstr "Grup de prconfiguracions {0}"
 
-msgid "Available roles"
-msgstr "Rols disponibles"
+msgid "Reference {0} is being used before it was defined"
+msgstr "La referència {0} està utilitzant-se abans de ser definida"
 
-msgid "role"
-msgstr "rol"
+msgid "Roles cannot appear more than once"
+msgstr "Els rols només poden aparèixer un sol cop"
 
-msgid "count"
-msgstr "compta"
+msgid "Preset role element without parent"
+msgstr "Element de rol predefinit sense parent"
 
-msgid "elements"
-msgstr "elements"
+msgid "Preset sub element without parent"
+msgstr "Sotselement predefinit sense parent"
 
-msgid "Optional Attributes:"
-msgstr "Atributs Opcionals:"
+msgid "Error parsing {0}: "
+msgstr "Error d''anàlisi {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Selecciona un increment automàtic de {0} per aquest camp"
+msgid "Search preset"
+msgstr "Cerca predefinit"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Anul·la l''increment automàtic  per aquest camp"
+msgid "Show preset search dialog"
+msgstr "Mostrar la finestra de cerca de preconfiguracions"
+
+msgid "Search presets"
+msgstr "Cercar element predefinit"
+
+msgid "Presets"
+msgstr "Predefinicions"
+
+msgid "Search for objects by preset"
+msgstr "Cerca per objectes predefinits"
+
+msgid "Show only applicable to selection"
+msgstr "Mostrar només el que sigui aplicable a la selecció"
+
+msgid "Search in tags"
+msgstr "Cerca entre les etiquetes"
+
+msgid "Add toolbar button"
+msgstr "Afegeix el botó de la barra d''eines"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13233,53 +13269,35 @@ msgstr ""
 "El nombre d''etiquetes predefinides \"{0}-{1}\" no és coherent. El nombre "
 "d''elements ''short_descriptions'' ha de ser el mateix que el de ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipus desconegut: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grup de preconfiguracions {1}/{0}"
-
-msgid "Preset group {0}"
-msgstr "Grup de prconfiguracions {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "La referència {0} està utilitzant-se abans de ser definida"
-
-msgid "Roles cannot appear more than once"
-msgstr "Els rols només poden aparèixer un sol cop"
-
-msgid "Preset role element without parent"
-msgstr "Element de rol predefinit sense parent"
-
-msgid "Preset sub element without parent"
-msgstr "Sotselement predefinit sense parent"
+msgid "More information about this feature"
+msgstr "Més informació sobre aquesta funcionalitat"
 
-msgid "Error parsing {0}: "
-msgstr "Error d''anàlisi {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributs Opcionals:"
 
-msgid "Search preset"
-msgstr "Cerca predefinit"
+msgid "Unknown requisite: {0}"
+msgstr "Requisit desconegut: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Mostrar la finestra de cerca de preconfiguracions"
+msgid "Illegal member expression: {0}"
+msgstr "Expressió de membre incorrecta: {0}"
 
-msgid "Search presets"
-msgstr "Cercar element predefinit"
+msgid "Available roles"
+msgstr "Rols disponibles"
 
-msgid "Presets"
-msgstr "Predefinicions"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
-msgstr "Cerca per objectes predefinits"
+msgid "count"
+msgstr "compta"
 
-msgid "Show only applicable to selection"
-msgstr "Mostrar només el que sigui aplicable a la selecció"
+msgid "elements"
+msgstr "elements"
 
-msgid "Search in tags"
-msgstr "Cerca entre les etiquetes"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Selecciona un increment automàtic de {0} per aquest camp"
 
-msgid "Add toolbar button"
-msgstr "Afegeix el botó de la barra d''eines"
+msgid "Cancel auto-increment for this field"
+msgstr "Anul·la l''increment automàtic  per aquest camp"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13694,12 +13712,6 @@ msgstr "Notificador de missatges"
 msgid "{0} not available (offline mode)"
 msgstr "{0} no disponible (mode fora de línia)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"No hi ha cap objecte amb l''ID {0} al conjunt local de dades. No és possible "
-"de deduir el tipus d''objecte."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Recuperant un conjunt de nodes de ''{0}''"
 
@@ -16180,6 +16192,9 @@ msgstr "Tolosa de Llenguadoc - Ortofotoplànol 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Ortofotogarfia 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16477,6 +16492,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (imatgeria aèria)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki camins)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotogarfia 2015 (imatgeria aèria)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16663,12 +16681,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k històric (OSM-Best)"
 
@@ -16928,6 +16952,16 @@ msgstr ""
 "d''un punt escollit."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16976,16 +17010,12 @@ msgstr ""
 "ordres. Utilitzeu l''enllaç per veure les ordres estàndard (arc, cercle, "
 "etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Aporta una llibreria gràfica comuna. No està destinat a ser instal·lat "
-"directament pels usuaris sinó com a dependència per a d''altres connectors."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Avís: Experimental!) Eina per combinar (fusionar) dades."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Crea una graella de vies."
 
@@ -17378,6 +17408,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Crea cases en filera a partir de blocs simples"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17711,63 +17746,9 @@ msgstr "Operador"
 msgid "Service Times"
 msgstr "Horari"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "ortus,ocàs"
-
-msgid "Su 09:30,11:00"
-msgstr "dg 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "ds,dg,festius 9:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "ds 18:00; dg 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"dv 08:00-18:00; 10-15 abril tancat; juny 07:00-20:00; agost tancat; 24 dec "
-"08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "ds 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "setmana 1-53/2 dv 09:00-12:00; setmana 2-52/2 dc 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horari d''obertura"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "ds-dg 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "dl-dv 08:30-20:00; ds,dg 08:00-15:00; festius tancat"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "dl-dv 08:30-20:00, dt-ds 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"dl-dg 08:00-18:00; 10-15 abril tancat; juny 08:00-14:00; agost tancat; 25 "
-"dec 25 tancat"
-
-msgid "sunrise-sunset"
-msgstr "ortus-ocàs"
-
-msgid "Su 10:00+"
-msgstr "dg 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Cadires de rodes"
 
@@ -20291,6 +20272,33 @@ msgstr "Alberg"
 msgid "Alpine Hut"
 msgstr "Refugi de muntanya"
 
+msgid "Wilderness Hut"
+msgstr "Refugi lliure"
+
+msgid "Access rights"
+msgstr "Drets d''accés"
+
+msgid "Shower"
+msgstr "Dutxa"
+
+msgid "seasonal"
+msgstr "estacional"
+
+msgid "Reservation"
+msgstr "Reserva"
+
+msgid "required"
+msgstr "obligatòria"
+
+msgid "recommended"
+msgstr "recomanada"
+
+msgid "members_only"
+msgstr "només per a membres"
+
+msgid "Closer Description"
+msgstr "Decripció"
+
 msgid "Caravan Site/RV Park"
 msgstr "Càmping de caravanes"
 
@@ -20402,12 +20410,6 @@ msgstr "Biergarten"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Discoteca"
-
-msgid "Strip Club"
-msgstr "Club de striptease"
-
 msgid "Tourism"
 msgstr "Turisme"
 
@@ -20459,9 +20461,6 @@ msgstr "ciutat"
 msgid "region"
 msgstr "regió"
 
-msgid "Closer Description"
-msgstr "Decripció"
-
 msgid "Routes shown for:"
 msgstr "Rutes mostrades:"
 
@@ -20585,12 +20584,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Equitació"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Bordell"
-
 msgid "Playground"
 msgstr "Zona de jocs infantil"
 
@@ -20622,6 +20615,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina"
 
+msgid "Night Club"
+msgstr "Discoteca"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Club de striptease"
+
+msgid "Brothel"
+msgstr "Bordell"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -20929,11 +20934,17 @@ msgstr "Veterinari"
 msgid "Toilets/Restrooms"
 msgstr "Lavabos"
 
-msgid "Access rights"
-msgstr "Drets d''accés"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Dones"
 
-msgid "seasonal"
-msgstr "estacional"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Homes"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisex"
 
 msgid "flush"
 msgstr "baixada"
@@ -20962,39 +20973,27 @@ msgstr "a la gatzoneta"
 msgid "urinal"
 msgstr "orinal"
 
-msgid "Shower"
-msgstr "Dutxa"
-
 msgid "Post Box"
 msgstr "Bústia"
 
 msgid "Collection times"
 msgstr "Horari de recollida"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "pal"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "fanal"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "mur"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "franqueig mecànic"
 
 msgid "Drive through"
 msgstr "Accés a servei amb cotxe (drive-through)"
@@ -21273,6 +21272,24 @@ msgstr "succió"
 msgid "Count"
 msgstr "Compta"
 
+msgid "Compressed Air"
+msgstr "Aire comprimit"
+
+msgid "Valves"
+msgstr "Vàlvules"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Presta (Sclaverand)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Columna publicitària"
 
@@ -21960,9 +21977,6 @@ msgstr "Far"
 msgid "Street Lamp"
 msgstr "Enllumenat públic"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Dll-Dv 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Estació de monitorització"
 
@@ -23100,11 +23114,8 @@ msgstr "Quiosc de premsa"
 msgid "Ticket"
 msgstr "Tiquets"
 
-msgid "Department Store"
-msgstr "Grans magatzems"
-
-msgid "Mall"
-msgstr "Centre comercial"
+msgid "For the body"
+msgstr "Per al cos"
 
 msgid "Chemist"
 msgstr "Química"
@@ -23130,12 +23141,15 @@ msgstr "Subministres mèdics"
 msgid "Jewellery"
 msgstr "Joieria"
 
-msgid "Gift/Souvenir"
-msgstr "Regals/Souvenirs"
-
 msgid "Erotic"
 msgstr "Sex-shop"
 
+msgid "Department Store"
+msgstr "Grans magatzems"
+
+msgid "Mall"
+msgstr "Centre comercial"
+
 msgid "Florist"
 msgstr "Florista"
 
@@ -23160,6 +23174,9 @@ msgstr "Instruments Musicals"
 msgid "Toys"
 msgstr "Joguineria"
 
+msgid "Gift/Souvenir"
+msgstr "Regals/Souvenirs"
+
 msgid "Variety Store"
 msgstr "Basar"
 
@@ -23175,6 +23192,9 @@ msgstr "Bosses"
 msgid "Pet"
 msgstr "Animals domèstics"
 
+msgid "Photo"
+msgstr "Foto"
+
 msgid "Funeral Directors"
 msgstr "Directors de funeràries"
 
@@ -25158,9 +25178,6 @@ msgstr "Cerca i corregeix adreces sense carrers (vàlids)."
 msgid "Address Edit"
 msgstr "Modifica una adreça"
 
-msgid "Searching"
-msgstr "Cercant"
-
 msgid "Guess values for "
 msgstr "Estima valors per "
 
@@ -25466,9 +25483,6 @@ msgstr "Error OSMI anterior"
 msgid "Next OSMI bug"
 msgstr "Error OSMI següent"
 
-msgid "Osm Inspector Bugs"
-msgstr "Errors de l''OSM Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Inspector d''errors de l''OSM"
 
@@ -26261,19 +26275,6 @@ msgid "Auto sourcing"
 msgstr "Enregistrar la font de manera automàtica"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"el connector del cadastre francès utilitzava la tecla de drecera F11per "
-"baixar,\n"
-"aquesta tecla ara està assignada a la commutació a la visualització en "
-"pantalla completa.\n"
-"La nova tecla per baixar és F10, però si voleu, podeu canviar-la\n"
-"a la configuració de dreceres."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26964,6 +26965,82 @@ msgstr "Selecció buida"
 msgid "Invalid reference or subject"
 msgstr "Referència o objecte no vàlid."
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adreça"
 
@@ -28506,12 +28583,18 @@ msgstr "Mesos"
 msgid "Days"
 msgstr "Dies"
 
+msgid "Imported images"
+msgstr "Imatges importades"
+
 msgid "Mapillary filter"
 msgstr "Filtre de Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Obre el diàleg de filtre de  Mapillary"
 
+msgid "Not older than: "
+msgstr "No anteriors a: "
+
 msgid "Downloaded images"
 msgstr "Imatges descarregades"
 
@@ -28527,6 +28610,9 @@ msgstr "Historial de Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Obre el diàleg de l''historial de Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Fotografia de Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Obre una finestra de Mapillary"
 
@@ -31155,6 +31241,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrassa"
 
+msgid "To-fix"
+msgstr "A corregir"
+
+msgid "Open to-fix window."
+msgstr "Obre la finestra de correcció"
+
+msgid "Tool:To-fix"
+msgstr "Eina:A esmenar"
+
+msgid "Skip"
+msgstr "Omet"
+
+msgid "Skip Error"
+msgstr "Omet l''error"
+
+msgid "Fixed"
+msgstr "Esmenat"
+
+msgid "Fixed Error"
+msgstr "Error esmenat"
+
+msgid "Not an error"
+msgstr "No és un error"
+
+msgid "Set download area (m²)"
+msgstr "Selecciona l''àrea a baixar (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "tofix:Omet element"
+
+msgid "tofix:Fixed item"
+msgstr "tofix:element corregit"
+
+msgid "tofix:Not a Error item"
+msgstr "tofix:No és un element amb error"
+
+msgid "Maintenance server"
+msgstr "Servidor de manteniment"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr "Alguna cosa ha anat malament, torneu a provar"
+
+msgid "Cannot place a node outside of the world."
+msgstr "No és possible de posar un node fora del Món."
+
+msgid "Layer to draw OSM error"
+msgstr "Error a la capa OSM a dibuixar"
+
 msgid "Browse"
 msgstr "Navega"
 
diff --git a/i18n/po/ca at valencia.po b/i18n/po/ca at valencia.po
index 368585f..8ab0cec 100644
--- a/i18n/po/ca at valencia.po
+++ b/i18n/po/ca at valencia.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-04-25 18:52+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: el_libre - - www.catmidia.cat\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:10+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:06+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ca at valencia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1469,6 +1469,15 @@ msgstr[1] ""
 "Hi ha 2 o més vies que usen els nodes seleccionats. Seleccioneu també la via "
 "adient."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Heu de seleccionar dos o més nodes per poder dividir una via tancada."
@@ -2257,17 +2266,11 @@ msgstr ""
 "Feu clic per mour el node ressaltat. Premeu la tecla Ctrl per a afegir nodes "
 "o la tecla Alt per suprimir-ne."
 
-msgid "Cannot place a node outside of the world."
-msgstr "No és possible de posar un node fora del Món."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "No es pot esborrar un node que fa referència a múltiples objectes"
-
 msgid "Cannot delete node that has tags"
 msgstr "No és possible d''eliminar un node amb atributs"
 
@@ -2701,6 +2704,12 @@ msgstr "tots els fills dels objectes que acomplisquen l''expressió"
 msgid "all parents of objects matching the expression"
 msgstr "tots els parents dels objectes que acomplisquen l''expressió"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-èsim membre de la relació i/o n-èsim node de la via"
 
@@ -2724,6 +2733,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objectes (i tots els seus nodes / membres de relació) a la zona telecarregada"
 
+msgid "Searching"
+msgstr "Cercant"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "No s''ha trobat cap resultat per ''{0}''"
 
@@ -4704,9 +4721,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "No tornar a mostrar (recordar selecció)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incomplet"
 
@@ -8470,9 +8484,6 @@ msgstr "Relació {0}"
 msgid "Object"
 msgstr "Objecte"
 
-msgid "not present"
-msgstr "No present"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -9521,6 +9532,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9622,6 +9636,13 @@ msgstr "Marcador anterior"
 msgid "Jump to previous marker"
 msgstr "Anar al marcador anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Se suporten totes les projeccions"
 
@@ -11811,9 +11832,6 @@ msgstr "Directori de la memòria cau de tessel·les: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12978,35 +12996,53 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisit desconegut: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipus desconegut: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Expressió de membre incorrecta: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grup de preconfiguracions {1}/{0}"
 
-msgid "More information about this feature"
-msgstr "Més informació sobre esta funcionalitat"
+msgid "Preset group {0}"
+msgstr "Grup de prconfiguracions {0}"
 
-msgid "Available roles"
-msgstr "Rols disponibles"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "role"
-msgstr "rol"
+msgid "Roles cannot appear more than once"
+msgstr "Els rols només poden aparèixer un sol cop"
 
-msgid "count"
-msgstr "compta"
+msgid "Preset role element without parent"
+msgstr "Element de rol predefinit sense parent"
 
-msgid "elements"
-msgstr "elements"
+msgid "Preset sub element without parent"
+msgstr "Sotselement predefinit sense parent"
 
-msgid "Optional Attributes:"
-msgstr "Atributs Opcionals:"
+msgid "Error parsing {0}: "
+msgstr "Error d''anàlisi {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Selecciona un increment automàtic de {0} per este camp"
+msgid "Search preset"
+msgstr "Cerca predefinit"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Anul·la l''increment automàtic  per este camp"
+msgid "Show preset search dialog"
+msgstr "Mostrar la finestra de cerca de preconfiguracions"
+
+msgid "Search presets"
+msgstr "Cercar element predefinit"
+
+msgid "Presets"
+msgstr "Predefinicions"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr "Mostrar només el que siga aplicable a la selecció"
+
+msgid "Search in tags"
+msgstr "Cerca entre les etiquetes"
+
+msgid "Add toolbar button"
+msgstr ""
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13046,53 +13082,35 @@ msgstr ""
 "El nombre d''etiquetes predefinides \"{0}-{1}\" no és coherent. El nombre "
 "d''elements ''short_descriptions'' ha de ser el mateix que el de ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipus desconegut: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grup de preconfiguracions {1}/{0}"
-
-msgid "Preset group {0}"
-msgstr "Grup de prconfiguracions {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr "Els rols només poden aparèixer un sol cop"
-
-msgid "Preset role element without parent"
-msgstr "Element de rol predefinit sense parent"
-
-msgid "Preset sub element without parent"
-msgstr "Sotselement predefinit sense parent"
+msgid "More information about this feature"
+msgstr "Més informació sobre esta funcionalitat"
 
-msgid "Error parsing {0}: "
-msgstr "Error d''anàlisi {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributs Opcionals:"
 
-msgid "Search preset"
-msgstr "Cerca predefinit"
+msgid "Unknown requisite: {0}"
+msgstr "Requisit desconegut: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Mostrar la finestra de cerca de preconfiguracions"
+msgid "Illegal member expression: {0}"
+msgstr "Expressió de membre incorrecta: {0}"
 
-msgid "Search presets"
-msgstr "Cercar element predefinit"
+msgid "Available roles"
+msgstr "Rols disponibles"
 
-msgid "Presets"
-msgstr "Predefinicions"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
-msgstr ""
+msgid "count"
+msgstr "compta"
 
-msgid "Show only applicable to selection"
-msgstr "Mostrar només el que siga aplicable a la selecció"
+msgid "elements"
+msgstr "elements"
 
-msgid "Search in tags"
-msgstr "Cerca entre les etiquetes"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Selecciona un increment automàtic de {0} per este camp"
 
-msgid "Add toolbar button"
-msgstr ""
+msgid "Cancel auto-increment for this field"
+msgstr "Anul·la l''increment automàtic  per este camp"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13505,12 +13523,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"No hi ha cap objecte amb l''ID {0} al conjunt local de dades. No és possible "
-"de deduir el tipus d''objecte."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Recuperant un conjunt de nodes de ''{0}''"
 
@@ -15967,6 +15979,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16259,6 +16274,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -16445,12 +16463,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16710,6 +16734,16 @@ msgstr ""
 "d''un punt escollit."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16754,12 +16788,10 @@ msgstr ""
 "Implementa una línia d''ordes i habilita la creació de les vostres pròpies "
 "ordes. Utilitzeu l''enllaç per veure les ordes estàndard (arc, cercle, etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -17132,6 +17164,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Crea cases en filera a partir de blocs simples"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17463,59 +17500,9 @@ msgstr "Operador"
 msgid "Service Times"
 msgstr "Horari"
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Horari d''obertura"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Cadires de rodes"
 
@@ -20019,6 +20006,33 @@ msgstr "Alberg"
 msgid "Alpine Hut"
 msgstr "Refugi de muntanya"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Drets d''accés"
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr "estacional"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Decripció"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -20130,12 +20144,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turisme"
 
@@ -20187,9 +20195,6 @@ msgstr "ciutat"
 msgid "region"
 msgstr "regió"
 
-msgid "Closer Description"
-msgstr "Decripció"
-
 msgid "Routes shown for:"
 msgstr "Rutes mostrades:"
 
@@ -20311,12 +20316,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Bordell"
-
 msgid "Playground"
 msgstr "Zona de jocs infantil"
 
@@ -20348,6 +20347,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina"
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr "Bordell"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -20655,11 +20666,17 @@ msgstr "Veterinari"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
-msgstr "Drets d''accés"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "estacional"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "descàrrega"
@@ -20688,24 +20705,12 @@ msgstr "a la gatzoneta"
 msgid "urinal"
 msgstr "orinal"
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Bústia"
 
 msgid "Collection times"
 msgstr "Horari de recollida"
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20999,6 +21004,24 @@ msgstr "succió"
 msgid "Count"
 msgstr "Compta"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -21686,9 +21709,6 @@ msgstr "Far"
 msgid "Street Lamp"
 msgstr "Enllumenat públic"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Dll-Dv 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22824,11 +22844,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Grans magatzems"
-
-msgid "Mall"
-msgstr "Centre comercial"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Química"
@@ -22854,12 +22871,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "Sex-shop"
 
+msgid "Department Store"
+msgstr "Grans magatzems"
+
+msgid "Mall"
+msgstr "Centre comercial"
+
 msgid "Florist"
 msgstr "Florista"
 
@@ -22884,6 +22904,9 @@ msgstr "Instruments Musicals"
 msgid "Toys"
 msgstr "Joguineria"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr "Basar"
 
@@ -22899,6 +22922,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -24834,9 +24860,6 @@ msgstr "Cerca i corregeix adreces sense carrers (vàlids)."
 msgid "Address Edit"
 msgstr "Modifica una adreça"
 
-msgid "Searching"
-msgstr "Cercant"
-
 msgid "Guess values for "
 msgstr "Estima valors per "
 
@@ -25142,9 +25165,6 @@ msgstr "Error OSMI anterior"
 msgid "Next OSMI bug"
 msgstr "Error OSMI següent"
 
-msgid "Osm Inspector Bugs"
-msgstr "Errors d''Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Inspector d''errors d''OSM"
 
@@ -25919,19 +25939,6 @@ msgid "Auto sourcing"
 msgstr "Enregistrar la font de manera automàtica"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"el connector del cadastre francés utilitzava la tecla de drecera F11per "
-"descarregar,\n"
-"esta tecla ara està assignada a la commutació a la visualització en pantalla "
-"completa.\n"
-"La nova tecla per descarregar és F10, però si voleu, podeu canviar-la\n"
-"a la configuració de dreceres."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26622,6 +26629,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adreça"
 
@@ -28163,12 +28246,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -28184,6 +28273,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30804,6 +30896,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrassa"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "No és possible de posar un node fora del Món."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Navega"
 
diff --git a/i18n/po/cs.po b/i18n/po/cs.po
index fa939ae..7a6fc30 100644
--- a/i18n/po/cs.po
+++ b/i18n/po/cs.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-05 11:12+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-19 09:50+0000\n"
 "Last-Translator: Dalibor Jelínek <launchpad.net at dalibor.cz>\n"
 "Language-Team: Czech <cs at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:38+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:37+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: cs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1473,6 +1473,15 @@ msgstr[0] "Více než jedna cesta obsahuje vybraný uzel. Vyberte také cestu."
 msgstr[1] "Více než jedna cesta obsahuje vybrané uzly. Vyberte také cestu."
 msgstr[2] "Více než jedna cesta obsahuje vybrané uzly. Vyberte také cestu."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Která část cesty by měla mít historii {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Část {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Musíte zvolit dva nebo více uzlů pro rozdělění kruhové cesty."
 
@@ -2259,18 +2268,12 @@ msgstr ""
 "Klikněte pro přesunutí zvýrazněného uzlu. Přidržte Ctrl pro přidání nových "
 "uzlů nebo Alt pro smazání."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Nemohu umístit uzel mimo svět."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Přidat nový uzel do cesty"
 msgstr[1] "Přidat nový uzel do {0} cest"
 msgstr[2] "Přidat nový uzel do {0} cest"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Nemohu smazat uzel, na který se odkazuje více objektů."
-
 msgid "Cannot delete node that has tags"
 msgstr "Nemohu odstranit uzel, který má značky."
 
@@ -2724,6 +2727,12 @@ msgstr "všichni potomci objektů vyhovujících podmínkám"
 msgid "all parents of objects matching the expression"
 msgstr "všichni rodiče objektů vyhovujících podmínkám"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relace obsahující prvek s rolí <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objekty jsoucí částí relace v roli <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-tý člen relace a/nebo n-tý uzel cesty"
 
@@ -2745,6 +2754,15 @@ msgstr "objekty ve stažené oblasti"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "objekty (a všechny uzly cesty/členy relace) ve stažené oblasti"
 
+msgid "Searching"
+msgstr "Vyhledávám"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Prohledávám {0} objekt"
+msgstr[1] "Prohledávám {0} objekty"
+msgstr[2] "Prohledávám {0} objektů"
+
 msgid "No match found for ''{0}''"
 msgstr "Nebyly nalezeny záznamy pro \"{0}\""
 
@@ -4735,9 +4753,6 @@ msgstr "Již nezobrazovat (pro toto sezení)"
 msgid "Do not show again (remembers choice)"
 msgstr "Neptat se příště (zapamatovat si volbu)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "nekompletní"
 
@@ -8528,9 +8543,6 @@ msgstr "Relace {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "nepřítomno"
-
 msgid "Changeset comment"
 msgstr "Komentář k sadě změn"
 
@@ -9584,6 +9596,9 @@ msgstr "Měřítko bodů: {0}"
 msgid "Best zoom: {0}"
 msgstr "Nejlepší zvětšení: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Odhadovaná velikost keše: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Statistika keše: {0}"
 
@@ -9689,6 +9704,17 @@ msgstr "Předchozí značka"
 msgid "Jump to previous marker"
 msgstr "Přejít na předchozí značku"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Chcete-li přidat další vrstvu, je třeba alokovat přinejmenším {0,number,#}MB "
+"paměti pro JOSM za použití volby -Xmx{0,number,#}M (viz "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Aktuálně máte pro JOSM alokováno {1,number,#}MB paměti"
+
 msgid "All projections are supported"
 msgstr "Podporovány jsou všechny projekce"
 
@@ -11834,9 +11860,6 @@ msgstr "Adresář keše dlaždic: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Maximální velikost diskové keše (na jednu sadu snímků) v MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maximální počet objektů v paměťové keši: "
-
 msgid "Tiles zoom offset:"
 msgstr "Offset zvětšení dlaždic:"
 
@@ -12992,35 +13015,53 @@ msgstr "Změnit značky"
 msgid "Add or remove toolbar button"
 msgstr "Přidat nebo odebrat tlačítko nástrojové lišty"
 
-msgid "Unknown requisite: {0}"
-msgstr "Neznámý vyžadovaný: {0}"
+msgid "Unknown type: {0}"
+msgstr "Neznámý typ: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Nepovolený členský výraz: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Skupina předvoleb {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Více informací o této předvolbě"
+msgid "Preset group {0}"
+msgstr "Skupina předvoleb {0}"
 
-msgid "Available roles"
-msgstr "Dostupné role"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Odkaz {0} je používán předtím, než byl definován"
 
-msgid "role"
-msgstr "role"
+msgid "Roles cannot appear more than once"
+msgstr "Role se nesmí vyskytovat víc než jednou"
 
-msgid "count"
-msgstr "počet"
+msgid "Preset role element without parent"
+msgstr "Přednastavený prvek role bez rodiče"
 
-msgid "elements"
-msgstr "prvky"
+msgid "Preset sub element without parent"
+msgstr "Přednastavený sub prvek bez rodiče"
 
-msgid "Optional Attributes:"
-msgstr "Volitelné atributy:"
+msgid "Error parsing {0}: "
+msgstr "Chyba parsování {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Nastavit automatickou změnu tohoto pole o {0}"
+msgid "Search preset"
+msgstr "Najít předvolbu"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Zrušit automatickou změnu tohoto pole"
+msgid "Show preset search dialog"
+msgstr "Zobrazit vyhledávací dialog předvoleb"
+
+msgid "Search presets"
+msgstr "Najít předvolby"
+
+msgid "Presets"
+msgstr "Předvolby"
+
+msgid "Search for objects by preset"
+msgstr "Hledat objekty dle předvolby"
+
+msgid "Show only applicable to selection"
+msgstr "Zobrazit pouze aplikovatelné na výběr"
+
+msgid "Search in tags"
+msgstr "Hledat ve značkách"
+
+msgid "Add toolbar button"
+msgstr "Přidat tlačítko do nástrojové lišty"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13060,53 +13101,35 @@ msgstr ""
 "Poškozená předvolba značení \"{0}-{1}\" - počet položek v "
 "''display_descriptions'' musí být stejný jako ve ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Neznámý typ: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Skupina předvoleb {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Skupina předvoleb {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Odkaz {0} je používán předtím, než byl definován"
-
-msgid "Roles cannot appear more than once"
-msgstr "Role se nesmí vyskytovat víc než jednou"
-
-msgid "Preset role element without parent"
-msgstr "Přednastavený prvek role bez rodiče"
-
-msgid "Preset sub element without parent"
-msgstr "Přednastavený sub prvek bez rodiče"
+msgid "More information about this feature"
+msgstr "Více informací o této předvolbě"
 
-msgid "Error parsing {0}: "
-msgstr "Chyba parsování {0}: "
+msgid "Optional Attributes:"
+msgstr "Volitelné atributy:"
 
-msgid "Search preset"
-msgstr "Najít předvolbu"
+msgid "Unknown requisite: {0}"
+msgstr "Neznámý vyžadovaný: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Zobrazit vyhledávací dialog předvoleb"
+msgid "Illegal member expression: {0}"
+msgstr "Nepovolený členský výraz: {0}"
 
-msgid "Search presets"
-msgstr "Najít předvolby"
+msgid "Available roles"
+msgstr "Dostupné role"
 
-msgid "Presets"
-msgstr "Předvolby"
+msgid "role"
+msgstr "role"
 
-msgid "Search for objects by preset"
-msgstr "Hledat objekty dle předvolby"
+msgid "count"
+msgstr "počet"
 
-msgid "Show only applicable to selection"
-msgstr "Zobrazit pouze aplikovatelné na výběr"
+msgid "elements"
+msgstr "prvky"
 
-msgid "Search in tags"
-msgstr "Hledat ve značkách"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Nastavit automatickou změnu tohoto pole o {0}"
 
-msgid "Add toolbar button"
-msgstr "Přidat tlačítko do nástrojové lišty"
+msgid "Cancel auto-increment for this field"
+msgstr "Zrušit automatickou změnu tohoto pole"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13499,11 +13522,6 @@ msgstr "Oznamování zpráv"
 msgid "{0} not available (offline mode)"
 msgstr "{0} nedostupné (offline mód)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"V místní datové sadě neexistuje prvek s ID {0}. Nelze zjistit typ prvku."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Stahuji balík uzlů z ''{0}''"
 
@@ -14784,17 +14802,17 @@ msgid_plural ""
 "referred to by ways {1}.<br>Please load the ways, remove the reference to "
 "the node, and upload again."
 msgstr[0] ""
-"<strong>Zlyhalo</strong> mazanie <strong>bodu {0}</strong>. Je stále "
-"odkazovaný z cesty {1}.<br>Prosím, načítajte cestu, odstráňte odkazovanie na "
-"bod a nahrajte dáta znovu."
+"<strong>Selhalo</strong> mazání <strong>bodu {0}</strong>. Je stále "
+"odkazovaný z cesty {1}.<br>Prosím, načtěte cestu, odstraňte odkaz na bod a "
+"nahrajte data znovu."
 msgstr[1] ""
-"<strong>Zlyhalo</strong> mazanie <strong>bodu {0}</strong>. Je stále "
-"odkazovaný z ciest {1}.<br>Prosím, načítajte cesty, odstráňte odkazovanie na "
-"bod a nahrajte dáta znovu."
+"<strong>Selhalo</strong> mazání <strong>bodu {0}</strong>. Je stále "
+"odkazovaný z cest {1}.<br>Prosím, načtěte cesty, odstraňte odkazy na bod a "
+"nahrajte data znovu."
 msgstr[2] ""
-"<strong>Zlyhalo</strong> mazanie <strong>bodu {0}</strong>. Je stále "
-"odkazovaný z ciest {1}.<br>Prosím, načítajte cesty, odstráňte odkazovanie na "
-"bod a nahrajte dáta znovu."
+"<strong>Selhalo</strong> mazání <strong>bodu {0}</strong>. Je stále "
+"odkazovaný z cest {1}.<br>Prosím, načtěte cesty, odstraňte odkazy na bod a "
+"nahrajte data znovu."
 
 msgid ""
 "<strong>Failed</strong> to delete <strong>node {0}</strong>. It is still "
@@ -15971,6 +15989,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16267,6 +16288,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (letecké snímky)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (stezky)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (aerial image)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16453,12 +16477,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16717,6 +16747,16 @@ msgstr ""
 "zvoleného bodu otáčení."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16764,16 +16804,12 @@ msgstr ""
 "Implementuje příkazový řádek a umožňuje tvorbu vlastních příkazů. Kliknutím "
 "na odkaz zjistíte více informací o základních příkazech (oblouk, kruh atd.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Poskytuje knihovnu Commons Imaging. Není myšleno pro použití přímo "
-"uživatelem, ale jako knihovna pro ostatní doplňky."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Pozor: Experimentální!) Nástroj pro spojování (slučování) dat."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Vytváření pravidelné mřížky cest."
 
@@ -17153,6 +17189,13 @@ msgstr ""
 "Rozděluje jednu plochu domu na jednotlivé části (garáže, řadové domy)."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Integrovat to-fix http://osmlab.github.io/to-fix/ do JOSM pro opravu chyb v "
+"OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17483,63 +17526,9 @@ msgstr "Operátor"
 msgid "Service Times"
 msgstr "Časy bohoslužeb"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "západ slunce, východ slunce"
-
-msgid "Su 09:30,11:00"
-msgstr "ne 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "so, ne, svátek 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "so 18:00; ne 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"pá 08:00-18:00; duben 10-15 zavřeno; červen 07:00-20:00; srpen zavřeno; 24. "
-"prosince 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "so 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "týden 1-53/2 pá 09:00-12:00; týden 2-52/2 st 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Otevírací doba"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "so-ne 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "po-pá 08:30-20:00; so,ne 08:00-15:00; ve svátek zavřeno"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "po-pá 08:30-20:00, út-so 08:00-15:00; ne 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"po-pá 08:00-18:00; duben 10.-15. zavřeno; červen 08:00-14:00; srpen zavřeno; "
-"25. prosince zavřeno"
-
-msgid "sunrise-sunset"
-msgstr "od východu do západu slunce"
-
-msgid "Su 10:00+"
-msgstr "ne 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Invalidní vozíky"
 
@@ -20055,6 +20044,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Horská chata"
 
+msgid "Wilderness Hut"
+msgstr "Chata v divočině"
+
+msgid "Access rights"
+msgstr "Přístupné"
+
+msgid "Shower"
+msgstr "Sprcha"
+
+msgid "seasonal"
+msgstr "sezónně"
+
+msgid "Reservation"
+msgstr "Rezervace"
+
+msgid "required"
+msgstr "vyžadována"
+
+msgid "recommended"
+msgstr "doporučena"
+
+msgid "members_only"
+msgstr "pouze pro členy"
+
+msgid "Closer Description"
+msgstr "Bližší popis"
+
 msgid "Caravan Site/RV Park"
 msgstr "Kemping pro obytné přívěsy"
 
@@ -20166,12 +20182,6 @@ msgstr "Pivní zahrádka"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Noční klub"
-
-msgid "Strip Club"
-msgstr "Strip klub"
-
 msgid "Tourism"
 msgstr "Turistika"
 
@@ -20223,9 +20233,6 @@ msgstr "město"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Bližší popis"
-
 msgid "Routes shown for:"
 msgstr "Trasy zobrazeny pro:"
 
@@ -20347,12 +20354,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Jízda na koni"
 
-msgid "Casino"
-msgstr "Kasino"
-
-msgid "Brothel"
-msgstr "Nevestinec"
-
 msgid "Playground"
 msgstr "Hřiště"
 
@@ -20384,6 +20385,18 @@ msgstr "Rybaření"
 msgid "Private Swimming Pool"
 msgstr "Soukromý bazén"
 
+msgid "Night Club"
+msgstr "Noční klub"
+
+msgid "Casino"
+msgstr "Kasino"
+
+msgid "Strip Club"
+msgstr "Strip klub"
+
+msgid "Brothel"
+msgstr "Nevestinec"
+
 msgid "Culture"
 msgstr "Kultura"
 
@@ -20691,11 +20704,17 @@ msgstr "Veterinář"
 msgid "Toilets/Restrooms"
 msgstr "WC/Toalety"
 
-msgid "Access rights"
-msgstr "Přístupné"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Ženy"
 
-msgid "seasonal"
-msgstr "sezónně"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Muži"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisex"
 
 msgid "flush"
 msgstr "splachovací"
@@ -20724,39 +20743,27 @@ msgstr "v podřepu"
 msgid "urinal"
 msgstr "pisoár"
 
-msgid "Shower"
-msgstr "Sprcha"
-
 msgid "Post Box"
 msgstr "Poštovní schránka"
 
 msgid "Collection times"
 msgstr "Čas výběru"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "sloup"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "lampa"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "zeď"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "měřič"
 
 msgid "Drive through"
 msgstr "Použitelná z auta (drive through)"
@@ -21035,6 +21042,24 @@ msgstr "sání"
 msgid "Count"
 msgstr "Počet"
 
+msgid "Compressed Air"
+msgstr "Stlačený vzduch"
+
+msgid "Valves"
+msgstr "Ventily"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Reklamní sloup"
 
@@ -21722,9 +21747,6 @@ msgstr "Maják"
 msgid "Street Lamp"
 msgstr "Lampa"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Po-Pi 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Monitorovací stanice"
 
@@ -22862,11 +22884,8 @@ msgstr "Trafika"
 msgid "Ticket"
 msgstr "Vstupenky"
 
-msgid "Department Store"
-msgstr "Obchodní dům"
-
-msgid "Mall"
-msgstr "Nákupní středisko"
+msgid "For the body"
+msgstr "Pro tělo"
 
 msgid "Chemist"
 msgstr "Drogerie"
@@ -22892,12 +22911,15 @@ msgstr "Zdravotnické potřeby"
 msgid "Jewellery"
 msgstr "Klenotnictví"
 
-msgid "Gift/Souvenir"
-msgstr "Dárky/Suvenýry"
-
 msgid "Erotic"
 msgstr "Sexshop"
 
+msgid "Department Store"
+msgstr "Obchodní dům"
+
+msgid "Mall"
+msgstr "Nákupní středisko"
+
 msgid "Florist"
 msgstr "Květinářství"
 
@@ -22922,6 +22944,9 @@ msgstr "Hudební nástroje"
 msgid "Toys"
 msgstr "Hračky"
 
+msgid "Gift/Souvenir"
+msgstr "Dárky/Suvenýry"
+
 msgid "Variety Store"
 msgstr "Zmiešaný tovar"
 
@@ -22937,6 +22962,9 @@ msgstr "Kabelky"
 msgid "Pet"
 msgstr "Zverimex"
 
+msgid "Photo"
+msgstr "Fotografie"
+
 msgid "Funeral Directors"
 msgstr "Pohřební služba"
 
@@ -24909,9 +24937,6 @@ msgstr "Najít a opravit adresy bez (platných) ulic."
 msgid "Address Edit"
 msgstr "Úprava adresy"
 
-msgid "Searching"
-msgstr "Vyhledávám"
-
 msgid "Guess values for "
 msgstr "Hádat hodnoty pro "
 
@@ -25214,9 +25239,6 @@ msgstr "Předchozí chyba"
 msgid "Next OSMI bug"
 msgstr "Další chyba"
 
-msgid "Osm Inspector Bugs"
-msgstr "Chyby OSM Inspektoru"
-
 msgid "OSM Inspector Bugs"
 msgstr "Chyby OSM Inspektoru"
 
@@ -25999,18 +26021,6 @@ msgid "Auto sourcing"
 msgstr "Automatické zdrojování"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Doplněk cadastre-fr používal klávesovou zkratku F11 pro zachytávání,\n"
-"ta je ovšem teď přiřazena k přepnutí do režimu zobrazení na celou "
-"obrazovku.\n"
-"Nová klávesová zkratka pro zachytávání je F10, ale pokud chcete,\n"
-"můžete tuto zkratku změnit."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26689,6 +26699,82 @@ msgstr "Prázdný výběr"
 msgid "Invalid reference or subject"
 msgstr "Nepoužitelná reference nebo cíl"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adresa"
 
@@ -28216,12 +28302,18 @@ msgstr "Měsíců"
 msgid "Days"
 msgstr "Dnů"
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr "Filter Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Otevřit okno filtru Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Stažené obrázky"
 
@@ -28237,6 +28329,9 @@ msgstr "Historie Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Otevřít dialog historie Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Obrázek Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Otevřít okno Mapillary"
 
@@ -30819,6 +30914,64 @@ msgstr ""
 msgid "Terrace"
 msgstr "Rozdělit na řadové domy"
 
+msgid "To-fix"
+msgstr "To-fix"
+
+msgid "Open to-fix window."
+msgstr "Otevřít okno to-fix"
+
+msgid "Tool:To-fix"
+msgstr "Nástroj:To-fix"
+
+msgid "Skip"
+msgstr "Přeskočit"
+
+msgid "Skip Error"
+msgstr "Přeskočit chybu"
+
+msgid "Fixed"
+msgstr "Opraveno"
+
+msgid "Fixed Error"
+msgstr "Chyba opravena"
+
+msgid "Not an error"
+msgstr "Není chybou"
+
+msgid "Set download area (m²)"
+msgstr "Nastavit oblast stahování (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "tofix:Přeskočit položku"
+
+msgid "tofix:Fixed item"
+msgstr "tofix:Opravená položka"
+
+msgid "tofix:Not a Error item"
+msgstr "tofix:Položka, která není chybou"
+
+msgid "Maintenance server"
+msgstr "Server údržby"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Něco se nepodařilo, aktualizujte si, prosím, doplněk nebo nahlaste "
+"problém na <a href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Něco se nepodařilo, zkuste znovu"
+
+msgid "Cannot place a node outside of the world."
+msgstr "Nemohu umístit uzel mimo svět."
+
+msgid "Layer to draw OSM error"
+msgstr "Vrstva pro vykreslení chyby OSM"
+
 msgid "Browse"
 msgstr "Prohlížet"
 
diff --git a/i18n/po/cy.po b/i18n/po/cy.po
index fdc7b26..3ff0545 100644
--- a/i18n/po/cy.po
+++ b/i18n/po/cy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-07-17 21:45+0000\n"
 "Last-Translator: iggy23 <Unknown>\n"
 "Language-Team: Welsh <cy at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
 "2 : 3;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:06+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:02+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: cy\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1364,6 +1364,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2082,17 +2091,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2504,6 +2507,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2525,6 +2534,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4360,9 +4377,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7852,9 +7866,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8751,6 +8762,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8850,6 +8864,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10780,9 +10801,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11851,34 +11869,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11909,52 +11945,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12301,10 +12319,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14451,6 +14465,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14743,6 +14760,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14929,12 +14949,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15189,6 +15215,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15222,12 +15258,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15534,6 +15568,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15849,59 +15888,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18388,6 +18377,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18499,12 +18515,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18556,9 +18566,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18680,12 +18687,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18717,6 +18718,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19024,10 +19037,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19057,24 +19076,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19368,6 +19375,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20055,9 +20080,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21193,10 +21215,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21223,10 +21242,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21253,6 +21275,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21268,6 +21293,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23184,9 +23212,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23480,9 +23505,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24137,13 +24159,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24769,6 +24784,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26202,12 +26293,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26223,6 +26320,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28682,6 +28782,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/da.po b/i18n/po/da.po
index efabd79..d6950ad 100644
--- a/i18n/po/da.po
+++ b/i18n/po/da.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-05 15:17+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-28 19:28+0000\n"
 "Last-Translator: Jørn <joern.map at gmail.com>\n"
 "Language-Team: Dansk <kde-i18n-doc at kde.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:38+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:37+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: da_DK\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
@@ -1468,6 +1468,15 @@ msgstr[0] ""
 msgstr[1] ""
 "Der er mere end en vej, som bruger de punkter, du har valgt. Vælg også vejen."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Hvilket vej segment bør genbruge historien fra {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segment {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Du skal vælge mindst to punkter for at opdele en kredsformig vej"
 
@@ -2239,17 +2248,11 @@ msgstr ""
 "Klik for at flytte det markerede punkt. Hold Ctrl nede for at tilføje nye "
 "punkter eller Alt for at slette."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Kan ikke placere et punkt uden for verdenen."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Tilføj et nyt punkt til vej"
 msgstr[1] "Tilføj et nyt punkt til {0} veje"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Kan ikke slette et punkt der henvises til af flere objekter"
-
 msgid "Cannot delete node that has tags"
 msgstr "Kan ikke slette et punkt der har tags"
 
@@ -2696,6 +2699,12 @@ msgstr "alle børn af objekter der svarer til udtrykket"
 msgid "all parents of objects matching the expression"
 msgstr "alle forældre til objekter der svarer til udtrykket"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relation indeholder et medlem med rollen <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objekter er en del af en relation med rollen <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n''te medlem af relation og/eller n''te punkt i vej"
 
@@ -2721,6 +2730,14 @@ msgstr ""
 "objekter (og alle det vej-punkter / relations medlemmer) i det downloadede "
 "område"
 
+msgid "Searching"
+msgstr "Søger"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Søger i {0} objekt"
+msgstr[1] "Søger i {0} objekter"
+
 msgid "No match found for ''{0}''"
 msgstr "Intet resultat for \"{0}\""
 
@@ -4648,7 +4665,7 @@ msgid "Unnamed junction"
 msgstr "Unavngivet kryds"
 
 msgid "Untagged ways (commented)"
-msgstr "U-taggede veje (kommenteret)"
+msgstr "Utaggede veje (kommenteret)"
 
 msgid "Untagged ways"
 msgstr "Utaggede veje"
@@ -4692,9 +4709,6 @@ msgstr "Vis ikke igen (denne session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Vis ikke igen (husker valg)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "ufuldstændig"
 
@@ -4739,13 +4753,13 @@ msgid "Precondition violation"
 msgstr "Brud på forudsætninger"
 
 msgid "Security exception"
-msgstr "Sikkerhedsundtagelse"
+msgstr "Sikkerhedshandling"
 
 msgid "Network exception"
-msgstr "Netværksundtagelse"
+msgstr "Netværkshandling"
 
 msgid "IO Exception"
-msgstr "IO undtagelse."
+msgstr "IO handling."
 
 msgid "Illegal Data"
 msgstr "Ugyldig data"
@@ -4801,7 +4815,7 @@ msgid "Downloading \"Message of the day\""
 msgstr "Downloader \"Dagens besked\""
 
 msgid "Failed to read MOTD. Exception was: {0}"
-msgstr "Kunne ikke læse MOTD. Undtagelsen var: {0}"
+msgstr "Kunne ikke læse MOTD. Handling var: {0}"
 
 msgid "Message of the day not available"
 msgstr "Dagens besked er ikke tilgængelig"
@@ -5116,7 +5130,7 @@ msgid "Imagery preferences"
 msgstr "Indstillinger for billedlag"
 
 msgid "Click to open the imagery tab in the preferences"
-msgstr "Åben indstillinger for billedlag"
+msgstr "Åbn indstillinger for billedlag"
 
 msgid "Search menu items"
 msgstr "Søgemenuemner"
@@ -6851,7 +6865,7 @@ msgid "Toggle dynamic buttons"
 msgstr "Dynamiske knapper til eller fra"
 
 msgid "Open preferences for this panel"
-msgstr "Åben indstillinger for dette panel"
+msgstr "Åbn indstillinger for dette panel"
 
 msgid "Undock the panel"
 msgstr "Frigør panelet"
@@ -7380,8 +7394,8 @@ msgid ""
 "<html>Download my open changesets<br><em>Disabled. Please enter your OSM "
 "user name in the preferences first.</em></html>"
 msgstr ""
-"<html>Download mine åbne rettesæt<br><em>deaktiveret. Indtast venligst først "
-"dit OSM brugernavn i indstillingerne.</em></html>"
+"<html>Download mine åbne rettesæt<br><em>deaktiveret. Indtast først dit OSM "
+"brugernavn i indstillingerne.</em></html>"
 
 msgid "<html>Download my open changesets</html>"
 msgstr "<html>Hent mine åbne rettesæt</html>"
@@ -7723,7 +7737,7 @@ msgid "Downloading relation {0}"
 msgstr "Downloader relation {0}"
 
 msgid "Ignoring exception because task was canceled. Exception: {0}"
-msgstr "Ignorerer undtagelsen da opgaven blev annulleret. Undtagelse: {0}"
+msgstr "Ignorerer handling da opgaven blev annulleret. Handling: {0}"
 
 msgid "Downloading {0} incomplete object"
 msgid_plural "Downloading {0} incomplete objects"
@@ -8187,7 +8201,7 @@ msgstr ""
 "downloade data ind i det nu aktive datalag.</html>"
 
 msgid "Open this dialog on startup"
-msgstr "Åben denne dialog ved opstart"
+msgstr "Åbn denne dialog ved opstart"
 
 msgid ""
 "<html>Autostart ''Download from OSM'' dialog every time JOSM is "
@@ -8310,7 +8324,7 @@ msgid "JOSM Help Browser"
 msgstr "JOSM’s Hjælp-browser"
 
 msgid "Failed to read CSS file ''help-browser.css''. Exception is: {0}"
-msgstr "Kunne ikke læse CSS-filen ''help-browser.css''. Undtagelse er: {0}"
+msgstr "Kunne ikke læse CSS-filen ''help-browser.css''. Handling er: {0}"
 
 msgid ""
 "<html><p class=\"warning-header\">Help content for help topic missing</p><p "
@@ -8467,9 +8481,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "ikke tilgængelig"
-
 msgid "Changeset comment"
 msgstr "Rettesæt kommentar"
 
@@ -8735,7 +8746,7 @@ msgid "Please enter the user name of your OSM account"
 msgstr "Indtast venligst din OSM-kontos brugernavn"
 
 msgid "Please enter the password of your OSM account"
-msgstr "Indtast kodeordet til din OSM-konto"
+msgstr "Indtast adgangskoden til din OSM-konto"
 
 msgid ""
 "Authenticating at the OSM API ''{0}'' failed. Please enter a valid username "
@@ -8748,14 +8759,14 @@ msgid "Please enter the user name of your account"
 msgstr "Indtast venligst dit konto-brugernavn"
 
 msgid "Please enter the password of your account"
-msgstr "Indtast venligst din konto-adgangskode"
+msgstr "Indtast adgangskoden til din konto"
 
 msgid ""
 "Authenticating at the host ''{0}'' failed. Please enter a valid username and "
 "a valid password."
 msgstr ""
-"Autentificeringen ved værten ''{0}'' fejlede. Indtast venligst et gyldigt "
-"brugernavn og kodeord."
+"Godkendelse ved værten ''{0}'' fejlede. Indtast et gyldigt brugernavn og en "
+"gyldig adgangskode."
 
 msgid "Please enter the user name for authenticating at your proxy server"
 msgstr "Indtast venligst brugernavnet til godkendelse ved din proxy-server"
@@ -8774,8 +8785,8 @@ msgid ""
 "Warning: depending on the authentication method the proxy server uses the "
 "password may be transferred unencrypted."
 msgstr ""
-"Advarsel: Afhængigt af godkendelsesmetoden proxy-serveren bruger, kan "
-"kodeordet blive overført ukrypteret."
+"Advarsel: Afhængig af godkendelsesmetoden proxy-serveren bruger, kan "
+"adgangskoden blive overført ukrypteret."
 
 msgid "Authenticate"
 msgstr "Godkend"
@@ -9304,7 +9315,7 @@ msgstr[1] "Uploader {0} objekter..."
 msgid ""
 "Ignoring caught exception because upload is canceled. Exception is: {0}"
 msgstr ""
-"Ignorerer fanget undtagelse fordi upload blev annulleret. Undtagelse er: {0}"
+"Ignorerer fangede handling fordi upload blev annulleret. Handling er: {0}"
 
 msgid "Upload successful!"
 msgstr "Upload lykkedes!"
@@ -9488,6 +9499,9 @@ msgstr "Pixel skala: {0}"
 msgid "Best zoom: {0}"
 msgstr "Bedste zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Anslået cache størrelse: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Cache statistik: {0}"
 
@@ -9589,6 +9603,17 @@ msgstr "Forrige markør"
 msgid "Jump to previous marker"
 msgstr "Hop til forrige markør"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"For at tilføje endnu et lag skal du afsætte mindst {0,number,#}MB hukommelse "
+"til JOSM ved brug af -Xmx{0,number,#}M option (se "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"I øjeblikket har du {1,number,#}MB hukommelse allokeret til JOSM"
+
 msgid "All projections are supported"
 msgstr "Alle projektioner er understøttet"
 
@@ -10042,9 +10067,9 @@ msgid ""
 "range of tracks or use CTRL+Click to select specific ones. The map is "
 "updated live in the background. Open the URLs by double clicking them.</html>"
 msgstr ""
-"<html>Vælg alle de spor du ønsker skal vises. Du kan trække og vælge en "
-"serie spor, eller du kan bruge CTRL+klik for at udvælge specifikke spor. "
-"Kortet opdateres automatisk i baggrunden. Åben URL’erne ved at dobbeltklikke "
+"<html>Vælg alle de spor som du ønsker der skal vises. Du kan trække og vælge "
+"en serie af spor, eller du kan bruge CTRL+klik for at vælge specifikke spor. "
+"Kortet opdateres automatisk i baggrunden. Åbn URL’erne ved at dobbeltklikke "
 "på dem.</html>"
 
 msgid "Set track visibility for {0}"
@@ -10420,7 +10445,7 @@ msgstr ""
 "Indtast dit OSM brugernavn og adgangskode. Kodeordet vil "
 "<strong>ikke</strong> blive gemt som klartekst i JOSM indstillingerne, og "
 "det vil kun blive sendt til OSM serveren <strong>en gang</strong>. "
-"Efterfølgende datauploads vil ikke bruge din afgangskode yderligere."
+"Efterfølgende datauploads vil ikke bruge din adgangskode yderligere."
 
 msgid "Username: "
 msgstr "Brugernavn: "
@@ -11007,7 +11032,7 @@ msgid "Replace existing values"
 msgstr "Erstat eksisterende værdier"
 
 msgid "Open JOSM customization file"
-msgstr "Åben JOSM tilpasningsfil"
+msgstr "Åbn JOSM tilpasningsfil"
 
 msgid "Import log"
 msgstr "Importer log"
@@ -11723,9 +11748,6 @@ msgstr "Tern-cache mappe: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Maksimal størrelse på disk cache (per billedlag) i MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maksimalt antal objekter i hukommelses cache: "
-
 msgid "Tiles zoom offset:"
 msgstr "Tern zoom forskydning:"
 
@@ -12878,35 +12900,53 @@ msgstr "Skift Tags"
 msgid "Add or remove toolbar button"
 msgstr "Tilføj eller fjern værktøjslinjeknap"
 
-msgid "Unknown requisite: {0}"
-msgstr "Ukendt krav: {0}"
+msgid "Unknown type: {0}"
+msgstr "Ukendt type: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Ugyldig medlemsudtryk: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Prædefinitionsgruppe {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Mere information om denne funktion"
+msgid "Preset group {0}"
+msgstr "Prædefinitionsgruppe {0}"
 
-msgid "Available roles"
-msgstr "Tilgængelige roller"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Henvisning {0} bliver brugt før den blev defineret"
 
-msgid "role"
-msgstr "rolle"
+msgid "Roles cannot appear more than once"
+msgstr "Roller kan ikke optræde mere end en gang"
 
-msgid "count"
-msgstr "antal"
+msgid "Preset role element without parent"
+msgstr "Prædefineret rolleelement uden forælder"
 
-msgid "elements"
-msgstr "elementer"
+msgid "Preset sub element without parent"
+msgstr "Prædefineret under-element uden forælder"
 
-msgid "Optional Attributes:"
-msgstr "Valgfri attributter:"
+msgid "Error parsing {0}: "
+msgstr "Fejl ved fortolkning af {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Vælg auto-forøgelse på {0} for dette felt"
+msgid "Search preset"
+msgstr "Søg prædefineret"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Annuller auto-forøgelse for dette felt"
+msgid "Show preset search dialog"
+msgstr "Vis prædefinitions søgedialog"
+
+msgid "Search presets"
+msgstr "Søg i prædefinerede"
+
+msgid "Presets"
+msgstr "Prædefinerede"
+
+msgid "Search for objects by preset"
+msgstr "Søg efter objekter via prædefinerede"
+
+msgid "Show only applicable to selection"
+msgstr "Vis kun dem der kan bruges på markeringen"
+
+msgid "Search in tags"
+msgstr "Søg i tags"
+
+msgid "Add toolbar button"
+msgstr "Tilføj værktøjslinjeknap"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12946,53 +12986,35 @@ msgstr ""
 "Ødelagte prædefinerede tags \"{0}-{1}\" - antallet af elementer i ''kort "
 "beskrivelse'' skal være den samme som i ''værdier''"
 
-msgid "Unknown type: {0}"
-msgstr "Ukendt type: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Prædefinitionsgruppe {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Prædefinitionsgruppe {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Henvisning {0} bliver brugt før den blev defineret"
-
-msgid "Roles cannot appear more than once"
-msgstr "Roller kan ikke optræde mere end en gang"
-
-msgid "Preset role element without parent"
-msgstr "Prædefineret rolleelement uden forælder"
-
-msgid "Preset sub element without parent"
-msgstr "Prædefineret under-element uden forælder"
+msgid "More information about this feature"
+msgstr "Mere information om denne funktion"
 
-msgid "Error parsing {0}: "
-msgstr "Fejl ved fortolkning af {0}: "
+msgid "Optional Attributes:"
+msgstr "Valgfri attributter:"
 
-msgid "Search preset"
-msgstr "Søg prædefineret"
+msgid "Unknown requisite: {0}"
+msgstr "Ukendt krav: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Vis prædefinitions søgedialog"
+msgid "Illegal member expression: {0}"
+msgstr "Ugyldig medlemsudtryk: {0}"
 
-msgid "Search presets"
-msgstr "Søg i prædefinerede"
+msgid "Available roles"
+msgstr "Tilgængelige roller"
 
-msgid "Presets"
-msgstr "Prædefinerede"
+msgid "role"
+msgstr "rolle"
 
-msgid "Search for objects by preset"
-msgstr "Søg efter objekter via prædefinerede"
+msgid "count"
+msgstr "antal"
 
-msgid "Show only applicable to selection"
-msgstr "Vis kun dem der kan bruges på markeringen"
+msgid "elements"
+msgstr "elementer"
 
-msgid "Search in tags"
-msgstr "Søg i tags"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Vælg auto-forøgelse på {0} for dette felt"
 
-msgid "Add toolbar button"
-msgstr "Tilføj værktøjslinjeknap"
+msgid "Cancel auto-increment for this field"
+msgstr "Annuller auto-forøgelse for dette felt"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13383,12 +13405,6 @@ msgstr "Besked meddelse"
 msgid "{0} not available (offline mode)"
 msgstr "{0} er ikke tilgængelig (offline-tilstand)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Ingen primitiv med id {0} i det lokale datasæt. Kan ikke udlede "
-"primitivtypen."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Henter en pakke punkter fra \"{0}\""
 
@@ -13565,7 +13581,7 @@ msgid "No data found in file {0}."
 msgstr "Ingen data fundet i filen {0}."
 
 msgid "Open OsmChange file"
-msgstr "Åben OsmChange fil"
+msgstr "Åbn OsmChange fil"
 
 msgid "Unsupported version: {0}"
 msgstr "Ikke understøttet version: {0}"
@@ -13650,7 +13666,7 @@ msgid "No data found in file ''{0}''."
 msgstr "Ingen data fundet i filen \"{0}\"."
 
 msgid "Open OSM file"
-msgstr "Åben OSM fil"
+msgstr "Åbn OSM fil"
 
 msgid "Reading was canceled"
 msgstr "Læsning blev annulleret"
@@ -13908,7 +13924,7 @@ msgid "Import data from URL"
 msgstr "Importer data fra URL"
 
 msgid "Open local files"
-msgstr "Åben lokale filer"
+msgstr "Åbn lokale filer"
 
 msgid "Load imagery layers"
 msgstr "Indlæs billedlag"
@@ -14325,7 +14341,7 @@ msgid "Loading plugins ..."
 msgstr "Indlæser udvidelser ..."
 
 msgid "Checking plugin preconditions..."
-msgstr "Undersøger udvidelseskrav..."
+msgstr "Undersøger udvidelse forudsætninger..."
 
 msgid "Loading plugin ''{0}''..."
 msgstr "Indlæser udvidelsen \"{0}\"..."
@@ -14361,10 +14377,10 @@ msgid_plural ""
 "Please open the Preference Dialog after JOSM has started and try to update "
 "them manually."
 msgstr[0] ""
-"Åben indstillinger dialogen når JOSM er startet, og prøv at opdater den "
+"Åbn indstillinger dialogen når JOSM er startet, og prøv at opdater den "
 "manuelt."
 msgstr[1] ""
-"Åben indstillinger dialogen når JOSM er startet, og prøv at opdater dem "
+"Åbn indstillinger dialogen når JOSM er startet, og prøv at opdater dem "
 "manuelt."
 
 msgid "Plugin update failed"
@@ -14533,8 +14549,8 @@ msgid ""
 "Failed to parse plugin list document from site ''{0}''. Skipping site. "
 "Exception was: {1}"
 msgstr ""
-"Kunne ikke fortolke udvidelseslistedokument fra webstedet ''{0}''. Springer "
-"over webstedet. Undtagelsen var: {1}"
+"Kunne ikke fortolke dokument med udvidelsesliste fra webstedet ''{0}''. "
+"Springer over webstedet. Handling var: {1}"
 
 msgid "Processing plugin list from site ''{0}''"
 msgstr "Behandler udvidelseslisten fra webstedet \"{0}\""
@@ -14559,9 +14575,8 @@ msgid ""
 "are running the latest<br>version of JOSM, please consider being kind and "
 "file a bug report."
 msgstr ""
-"Der opstod en uventet undtagelse.<br>Dette er altid en kodefejl. Hvis du "
-"bruger den nyeste<br>version af JOSM, overvej da venligst at indsende en "
-"fejlrapport."
+"Der opstod en uventet handling.<br>Dette er altid en kodefejl. Hvis du "
+"bruger den nyeste<br>version af JOSM, overvej da at indsende en fejlrapport."
 
 msgid "Update JOSM"
 msgstr "Opdater JOSM"
@@ -14573,10 +14588,10 @@ msgid ""
 "(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
 "bug report."
 msgstr ""
-"Der opstod en uventet undtagelse. Dette er altid en kodefejl.<br>Men, du "
+"Der opstod en uventet handling. Dette er altid en kodefejl.<br>Men, du "
 "bruger en ældre version af JOSM ({0}),<br> i stedet for den aktuelle testede "
-"version (<b>{1}</b>).<br><br><b>Venligst opdaterer JOSM</b> før indsendelse "
-"af en fejlrapport."
+"version (<b>{1}</b>).<br><br><b>Opdater JOSM</b> før indsendelse af en "
+"fejlrapport."
 
 msgid "Unexpected Exception"
 msgstr "Uventet handling"
@@ -14636,7 +14651,7 @@ msgid ""
 msgstr ""
 "<html>Kunne ikke godkendes på OSM serveren ''{0}''.<br>Du bruger OAuth til "
 "at godkende, men der ikke er noget <br>OAuth adgangsudtryk "
-"konfigureret.<br>Åben indstillingsdialogen, og gennerer eller indtast et "
+"konfigureret.<br>Åbn indstillingsdialogen, og gennerer eller indtast et "
 "adgangsudtryk.</html>"
 
 msgid ""
@@ -15358,7 +15373,7 @@ msgstr "by"
 
 msgctxt "Place type"
 msgid "locality"
-msgstr "locality"
+msgstr "lokalitet"
 
 msgctxt "Place type"
 msgid "village"
@@ -15370,11 +15385,11 @@ msgstr "by"
 
 msgctxt "Place type"
 msgid "borough"
-msgstr "borough"
+msgstr "købstad"
 
 msgctxt "Place type"
 msgid "municipality"
-msgstr "municipality"
+msgstr "kommune"
 
 msgctxt "Place type"
 msgid "island"
@@ -15462,10 +15477,10 @@ msgid "New Folder"
 msgstr "Ny mappe"
 
 msgid "Open selected file"
-msgstr "Åben valgte fil"
+msgstr "Åbn valgte fil"
 
 msgid "Open selected file."
-msgstr "Åben valgte fil."
+msgstr "Åbn valgte fil."
 
 msgid "Refresh"
 msgstr "Opdater"
@@ -15820,6 +15835,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16116,6 +16134,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (aerial image)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16302,12 +16323,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16567,6 +16594,21 @@ msgstr ""
 "et valgt omdrejningspunkt."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Tilbyder Apache fælles bibliotek komponenter. Ikke beregnet til at blive "
+"installeret direkte af brugerne, men derimod som en afhængighed til andre "
+"udvidelser."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Tilbyder Apache HTTP bibliotek. Ikke beregnet til at blive installeret "
+"direkte af brugerne, men derimod som en afhængighed til andre udvidelser."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16614,15 +16656,12 @@ msgstr ""
 "Implementerer en kommandolinje og gør det muligt at oprette dine egne "
 "kommandoer. Se link til standard kommandoer (bue, cirkel osv.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
-"Tilbyder fælles billede bibliotek. Ikke beregnet til at blive installeret "
-"direkte af brugerne, men snarere som en afhængighed af andre udvidelser."
+"(Advarsel: Eksperimentel!) Værktøj til at sammensmelte (flette) data."
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
-msgstr "(Advarsel: Experimental!) Værktøj til at sammenblande (flette) data."
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
 
 msgid "Create a grid of ways."
 msgstr "Opret et net af veje."
@@ -17009,6 +17048,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Lav rækkehuse ud af en enkelt blok."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Indpas skal-rettes http://osmlab.github.io/to-fix/ i JOSM for at reparere "
+"fejl i OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17339,61 +17385,9 @@ msgstr "Selskab"
 msgid "Service Times"
 msgstr "Servicetider"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Åbningstider"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Kørestole"
 
@@ -18854,10 +18848,10 @@ msgid "Arcade"
 msgstr "Arkade"
 
 msgid "Open on left side"
-msgstr "Åben på venstre side"
+msgstr "Åbn på venstre side"
 
 msgid "Open on right side"
-msgstr "Åben på højre side"
+msgstr "Åbn på højre side"
 
 msgid "Colonnade"
 msgstr "Kolonnade"
@@ -19909,6 +19903,33 @@ msgstr "Vandrerhjem"
 msgid "Alpine Hut"
 msgstr "Alpinhytte"
 
+msgid "Wilderness Hut"
+msgstr "Vildmarkshytte"
+
+msgid "Access rights"
+msgstr "Adgangsrettigheder"
+
+msgid "Shower"
+msgstr "Bruser"
+
+msgid "seasonal"
+msgstr "sæsonmæssige"
+
+msgid "Reservation"
+msgstr "Reservation"
+
+msgid "required"
+msgstr "krævet"
+
+msgid "recommended"
+msgstr "anbefalet"
+
+msgid "members_only"
+msgstr "kun medlemmer"
+
+msgid "Closer Description"
+msgstr "Nærmere beskrivelse"
+
 msgid "Caravan Site/RV Park"
 msgstr "Autocamperplads"
 
@@ -20020,12 +20041,6 @@ msgstr "Ølhave"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Natklub"
-
-msgid "Strip Club"
-msgstr "Stripklub"
-
 msgid "Tourism"
 msgstr "Turisme"
 
@@ -20077,9 +20092,6 @@ msgstr "by"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Nærmere beskrivelse"
-
 msgid "Routes shown for:"
 msgstr "Ruter vist for:"
 
@@ -20203,12 +20215,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Rideskole"
 
-msgid "Casino"
-msgstr "Kasino"
-
-msgid "Brothel"
-msgstr "Bordel"
-
 msgid "Playground"
 msgstr "Legeplads"
 
@@ -20240,6 +20246,18 @@ msgstr "Fiskeri"
 msgid "Private Swimming Pool"
 msgstr "Privat svømmebassin"
 
+msgid "Night Club"
+msgstr "Natklub"
+
+msgid "Casino"
+msgstr "Kasino"
+
+msgid "Strip Club"
+msgstr "Stripklub"
+
+msgid "Brothel"
+msgstr "Bordel"
+
 msgid "Culture"
 msgstr "Kultur"
 
@@ -20547,11 +20565,17 @@ msgstr "Dyrlæge"
 msgid "Toilets/Restrooms"
 msgstr "Toiletter"
 
-msgid "Access rights"
-msgstr "Adgangsrettigheder"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Kvinde"
 
-msgid "seasonal"
-msgstr "sæsonmæssige"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Mand"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Begge køn"
 
 msgid "flush"
 msgstr "skyl"
@@ -20580,39 +20604,27 @@ msgstr "på hug"
 msgid "urinal"
 msgstr "stående"
 
-msgid "Shower"
-msgstr "Bruser"
-
 msgid "Post Box"
 msgstr "Postkasse"
 
 msgid "Collection times"
 msgstr "Tømningstidspunkt"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "søjle"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "lampe"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "væg"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "meter"
 
 msgid "Drive through"
 msgstr "Køre igennem"
@@ -20891,6 +20903,24 @@ msgstr "sugning"
 msgid "Count"
 msgstr "Antal"
 
+msgid "Compressed Air"
+msgstr "Komprimeret luft"
+
+msgid "Valves"
+msgstr "Ventiler"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Reklamesøjle"
 
@@ -21578,9 +21608,6 @@ msgstr "Fyrtårn"
 msgid "Street Lamp"
 msgstr "Gadelampe"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Målestation"
 
@@ -22718,11 +22745,8 @@ msgstr "Aviskiosk"
 msgid "Ticket"
 msgstr "Billetter"
 
-msgid "Department Store"
-msgstr "Varehus"
-
-msgid "Mall"
-msgstr "Butikscenter"
+msgid "For the body"
+msgstr "Til kroppen"
 
 msgid "Chemist"
 msgstr "Materialist"
@@ -22748,12 +22772,15 @@ msgstr "Medicinsk udstyr"
 msgid "Jewellery"
 msgstr "Guldsmed"
 
-msgid "Gift/Souvenir"
-msgstr "Gave/Souvenir"
-
 msgid "Erotic"
 msgstr "Erotisk"
 
+msgid "Department Store"
+msgstr "Varehus"
+
+msgid "Mall"
+msgstr "Butikscenter"
+
 msgid "Florist"
 msgstr "Blomsterhandler"
 
@@ -22778,6 +22805,9 @@ msgstr "Musikinstrumenter"
 msgid "Toys"
 msgstr "Legetøjsbutik"
 
+msgid "Gift/Souvenir"
+msgstr "Gave/Souvenir"
+
 msgid "Variety Store"
 msgstr "Småtingsbutik"
 
@@ -22793,6 +22823,9 @@ msgstr "Taskebutik"
 msgid "Pet"
 msgstr "Dyrehandler"
 
+msgid "Photo"
+msgstr "Foto"
+
 msgid "Funeral Directors"
 msgstr "Bedemand"
 
@@ -24612,7 +24645,7 @@ msgid "No SRTM data"
 msgstr "Ingen SRTM data"
 
 msgid "Open the elevation profile window."
-msgstr "Åben højdeprofilvindue."
+msgstr "Åbn højdeprofilvindue."
 
 msgid "Min"
 msgstr "Min."
@@ -24764,9 +24797,6 @@ msgstr "Find og ret adresser uden (gyldige) gader."
 msgid "Address Edit"
 msgstr "Adresse redigering"
 
-msgid "Searching"
-msgstr "Søger"
-
 msgid "Guess values for "
 msgstr "Gæt værdier for "
 
@@ -24973,10 +25003,10 @@ msgid "Save NanoLog layer"
 msgstr "Gem NanoLog lag"
 
 msgid "Open NanoLog panel"
-msgstr "Åben NanoLog panel"
+msgstr "Åbn NanoLog panel"
 
 msgid "Open NanoLog file..."
-msgstr "Åben NanoLog fil..."
+msgstr "Åbn NanoLog fil..."
 
 msgid "Could not read NanoLog file:"
 msgstr "Kunne ikke læse NanoLog fil:"
@@ -25042,7 +25072,7 @@ msgid "Error in timeformat"
 msgstr "Fejl i tidsformat"
 
 msgid "open end"
-msgstr "åben slutning"
+msgstr "åbn slutning"
 
 msgid "Import Osm Inspector Bugs..."
 msgstr "Importer Osm Inspector fejl..."
@@ -25051,7 +25081,7 @@ msgid "OsmInspector"
 msgstr "OsmInspector"
 
 msgid "Open OsmInspector"
-msgstr "Åben OsmInspector"
+msgstr "Åbn OsmInspector"
 
 msgid "OsmBugInfo"
 msgstr "OsmFejlInfo"
@@ -25068,9 +25098,6 @@ msgstr "Forrige OSMI fejl"
 msgid "Next OSMI bug"
 msgstr "Næste OSMI fejl"
 
-msgid "Osm Inspector Bugs"
-msgstr "Osm Inspector fejl"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector fejl"
 
@@ -25646,12 +25673,12 @@ msgid ""
 "color. The red, green and blue values must be in the range of (selected - "
 "threshold) to (selected + threshold). (Default: {0})."
 msgstr ""
-"Farvegrænseværdien definerer hvor meget en farve kan afvige fra den valgte "
-"farve. De røde, grønne og blå værdier skal være i intervallet (valgt - "
-"grænseværdi) til (valgt + grænseværdi). (Standard: {0})."
+"Grænseværdien for farven definerer hvor meget en farve kan afvige fra den "
+"valgte farve. De røde, grønne og blå værdier skal være i intervallet (valgt -"
+" grænseværdi) til (valgt + grænseværdi). (Standard: {0})."
 
 msgid "Color Threshold"
-msgstr "Farvegrænseværdi"
+msgstr "Grænseværdi for farve"
 
 msgid "Use HSV based algorithm"
 msgstr "Brug HSV baseret algoritme"
@@ -25850,17 +25877,6 @@ msgid "Auto sourcing"
 msgstr "Autokilde"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Udvidelsen matrikel-fr brugte genvejen F11 til billedtagning,\n"
-"den bilver nu brugt til fuldsskærms skift.\n"
-"Den nye billedtagnings tast er F10, men du kan ændre tasten\n"
-"i genvejsindstillinger, hvis du ønsker."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26416,7 +26432,7 @@ msgid "Color Schemes"
 msgstr "Farveskemaer"
 
 msgid "Conflate object pair"
-msgstr ""
+msgstr "Sammensmelt objekt par"
 
 msgid "Added {0} object to subject layer"
 msgid_plural "Added {0} objects to subject layer"
@@ -26424,112 +26440,112 @@ msgstr[0] "Tilføjede {0} objekt til emnets lag"
 msgstr[1] "Tilføjede {0} objekter til emnets lag"
 
 msgid "Conflation"
-msgstr ""
+msgstr "Sammensmeltning"
 
 msgid "Activates the conflation plugin"
-msgstr ""
+msgstr "Aktiverer sammensmeltnings udvidelsen"
 
 msgid "Matches"
-msgstr ""
+msgstr "Træffere"
 
 msgid "Reference only"
-msgstr ""
+msgstr "Kun reference"
 
 msgid "Subject only"
-msgstr ""
+msgstr "Kun emne"
 
 msgid "Matches ({0})"
-msgstr ""
+msgstr "Træffere ({0})"
 
 msgid "Reference only ({0})"
-msgstr ""
+msgstr "Kun reference ({0})"
 
 msgid "Subject only ({0})"
-msgstr ""
+msgstr "Kun emne ({0})"
 
 msgid "Configure"
 msgstr "Konfigurer"
 
 msgid "Configure conflation options"
-msgstr ""
+msgstr "Konfigurer sammensmeltnings muligheder"
 
 msgid "Delete {0} conflation matches"
-msgstr ""
+msgstr "Slet {0} sammensmeltnings træffere"
 
 msgid "Remove {0} unmatched objects"
-msgstr ""
+msgstr "Fjern {0} ikke trufne objekter"
 
 msgid "Remove selected matches"
-msgstr ""
+msgstr "Fjern valgte træffere"
 
 msgid "Conflate"
-msgstr ""
+msgstr "Sammensmelt"
 
 msgid "Conflate selected objects"
-msgstr ""
+msgstr "Sammensmelt valgte objekter"
 
 msgid "Conflation: {0}"
-msgstr ""
+msgstr "Sammensmeltning: {0}"
 
 msgid "Cannot replace geometry."
-msgstr ""
+msgstr "Kan ikke erstatte geometri."
 
 msgid "Zoom to selected primitive(s)"
-msgstr ""
+msgstr "Zoom til valgte primitive(r)"
 
 msgid "Select selected primitive(s)"
-msgstr ""
+msgstr "Vælg valgte primitive(r)"
 
 msgid "Select the primitives currently selected in the list"
-msgstr ""
+msgstr "Vælg de primitiver aktuelt valgt i listen"
 
 msgid "Match finder settings"
-msgstr ""
+msgstr "Træf finder indstillinger"
 
 msgid "Match finder method"
-msgstr ""
+msgstr "Træf finder metode"
 
 msgid "Threshold distance"
-msgstr ""
+msgstr "Grænseværdi for afstand"
 
 msgid "Distances greater than this will result in a score of zero."
-msgstr ""
+msgstr "Afstande større end dette vil resultere i en score på nul."
 
 msgid "Centroid distance"
-msgstr ""
+msgstr "Tyngdepunkt afstand"
 
 msgid "Hausdorff distance"
-msgstr ""
+msgstr "Hausdorff afstand"
 
 msgid "Configure conflation settings"
-msgstr ""
+msgstr "Konfigurer sammensmeltnings indstillinger"
 
 msgid "Generate matches"
-msgstr ""
+msgstr "Generere træffere"
 
 msgid "Subject"
 msgstr "Emne"
 
 msgid "Selections must be made for both reference and subject."
-msgstr ""
+msgstr "Markeringer skal foretages for både reference og emne."
 
 msgid "Incomplete selections"
 msgstr "Ufuldstændige markeringer"
 
 msgid "Restore subject selection"
-msgstr ""
+msgstr "Gendan valgt emne"
 
 msgid "Restore reference selection"
-msgstr ""
+msgstr "Gendan valgt reference"
 
 msgid "Freeze subject selection"
-msgstr ""
+msgstr "Frys emne valg"
 
 msgid "No valid OSM data layer present."
 msgstr "Intet gyldigt OSM datalag til stede."
 
 msgid "Error freezing selection"
-msgstr ""
+msgstr "Fejl under frysning af valg"
 
 msgid "Nothing is selected, please try again."
 msgstr "Intet er valgt, prøv igen."
@@ -26540,6 +26556,82 @@ msgstr "Tom markering"
 msgid "Invalid reference or subject"
 msgstr "Ugyldig reference eller emne"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adresse"
 
@@ -26682,7 +26774,7 @@ msgid "GeoChat"
 msgstr "GeoChat"
 
 msgid "Open GeoChat panel"
-msgstr "Åben GeoChat panel"
+msgstr "Åbn GeoChat panel"
 
 msgid "Zoom in to see messages"
 msgstr "Zoom ind for at se beskeder"
@@ -27040,7 +27132,7 @@ msgid "Graph View Dialog"
 msgstr ""
 
 msgid "Open the dialog for graph view configuration."
-msgstr ""
+msgstr "Åbn dialogen for grafen visnings konfiguration."
 
 msgid "default"
 msgstr "standard"
@@ -27211,7 +27303,7 @@ msgstr ""
 "Vil du fortsætte uden at validere filen?"
 
 msgid "Open Imagery XML file"
-msgstr "Åben billedlag XML fil"
+msgstr "Åbn billedlag XML fil"
 
 msgid "Calibration Layer"
 msgstr "Kalibreringslag"
@@ -27287,54 +27379,60 @@ msgid "km"
 msgstr "km"
 
 msgid "Calibration geometries"
-msgstr ""
+msgstr "Kalibrering af geometrier"
 
 msgid "Deprecated offsets"
-msgstr ""
+msgstr "Forældede forskydninger"
 
 msgid ""
 "The topmost imagery layer has been shifted to presumably match\n"
 "OSM data in the area. Please check that the offset is still valid\n"
 "by downloading GPS tracks and comparing them and OSM data to the imagery."
 msgstr ""
+"Det øverste billedlag er blevet flyttet så det formentligt matcher\n"
+"OSM data i området. Kontroller at forskydningen stadig er gyldig\n"
+"ved at downloade GPS spor og sammenligne dem og OSM data med billedlag."
 
 msgid ""
 "A layer has been added with a calibration geometry. Hide data layers,\n"
 "find the corresponding feature on the imagery layer and move it accordingly."
 msgstr ""
+"Et lag er blevet tilføjet med en kalibrerings geometri. Skjul datalag,\n"
+"find den tilsvarende funktion på billedlag og flyt det i overensstemmelse "
+"hermed."
 
 msgid "Deprecated by {0} on {1}"
-msgstr ""
+msgstr "Gjort forældet af {0} den {1}"
 
 msgid "Created by {0} on {1}"
-msgstr ""
+msgstr "Oprettet af {0} den {1}"
 
 msgid "Offset Information"
-msgstr ""
+msgstr "Information om forskydning"
 
 msgid "Report this offset"
-msgstr ""
+msgstr "Rapporter denne forskydning"
 
 msgid "You are to notify moderators of this offset. Why?"
-msgstr ""
+msgstr "Du er ved at underrette redaktører af denne forskydning. Hvorfor?"
 
 msgid "Reporting the offset..."
-msgstr ""
+msgstr "Rapporter forskydningen..."
 
 msgid "An imagery offset of {0}"
 msgstr "En billedforskydning på {0}"
 
 msgid "Imagery ID"
-msgstr ""
+msgstr "Billedlags ID"
 
 msgid "A calibration geometry of {0} nodes"
-msgstr ""
+msgstr "En kalibrerings geometri med {0} punkter"
 
 msgid "Determined right here"
-msgstr ""
+msgstr "Bestemt lige her"
 
 msgid "Determined {0} away"
-msgstr ""
+msgstr "Bestemt {0} væk"
 
 msgid "Reason"
 msgstr "Årsag"
@@ -27349,28 +27447,34 @@ msgid "Unable to connect to the server"
 msgstr "Kan ikke oprette forbindelse til serveren"
 
 msgid "Store Imagery Offset..."
-msgstr ""
+msgstr "Gem billedlags forskydning..."
 
 msgid ""
 "Upload an offset for current imagery (or calibration object geometry) to a "
 "server"
 msgstr ""
+"Upload en forskydning for nuværende billedlag (eller kalibrerings geometri "
+"objekt) til en server"
 
 msgid "Store calibration geometry"
-msgstr ""
+msgstr "Gem kalibrerings geometri"
 
 msgid "Store imagery offset"
-msgstr ""
+msgstr "Gem billedlags forskydning"
 
 msgid ""
 "The selected object can be used as a calibration geometry. What do you "
 "intend to do?"
 msgstr ""
+"Det valgte objekt kan anvendes som en kalibrerings geometri. Hvad vil du "
+"gøre?"
 
 msgid ""
 "The topmost imagery layer has no offset. Are you sure you want to upload "
 "this?"
 msgstr ""
+"Det øverste billedlag har ikke en forskydning. Er du sikker på du vil at "
+"uploade det her?"
 
 msgid ""
 "You are registering an imagery offset. Other users in this area will be able "
@@ -27378,6 +27482,10 @@ msgid ""
 "Please make sure it is as precise as possible, and describe a region this "
 "offset is applicable to."
 msgstr ""
+"Du registrerer en billedlags forskydning. Andre brugere på dette område vil "
+"være i stand til at bruge det til kortlægning.\n"
+"Sørg for at det er så præcist som muligt, og beskriv en region denne "
+"forskydning er gældende for."
 
 msgid ""
 "You are registering a calibration geometry. It should be the most precisely "
@@ -27385,6 +27493,10 @@ msgid ""
 "clearly visible boundaries on various satellite imagery. Please describe "
 "this object and its whereabouts."
 msgstr ""
+"Du registrerer en kalibrerings geometri. Det bør være det mest præcise "
+"positionerede objekt, med\n"
+"tydelige grænser på diverse satellitbilleder. Beskriv dette objekt og dets "
+"beliggenhed."
 
 msgid "Uploading a new offset..."
 msgstr "Uploader en ny forskydning..."
@@ -27468,7 +27580,7 @@ msgid "SVG files [ImportVec plugin] (*.svg)"
 msgstr "SVG filer [ImportVec plugin] (*.svg)"
 
 msgid "Please open or create data layer before importing"
-msgstr "Åben eller skab nyt data lag før import"
+msgstr "Åbn eller skab datalag før importering"
 
 msgid "InfoMode"
 msgstr "Infotilstand"
@@ -27606,7 +27718,7 @@ msgid "generate all combinations from entrie/exit candidates"
 msgstr ""
 
 msgid "Direction index ''{0}'' not found"
-msgstr ""
+msgstr "Retnings indeks ''{0}'' blev ikke fundet"
 
 msgid "The starting location was not within the bbox"
 msgstr "Startstedet var ikke indenfor afgrænsningsfeltet"
@@ -27633,10 +27745,10 @@ msgid "checking cache..."
 msgstr "tjekker cache..."
 
 msgid "Running vertex reduction..."
-msgstr ""
+msgstr "Kører vertex reduktion..."
 
 msgid "Running Douglas-Peucker approximation..."
-msgstr ""
+msgstr "Kører Douglas-Peucker tilnærmelse..."
 
 msgid "Removing duplicate nodes..."
 msgstr "Fjerner dublet-punkter..."
@@ -27702,7 +27814,7 @@ msgid "Shift all traces to north (degrees)"
 msgstr "Forskyd alle spor mod nord (grader)"
 
 msgid "Direction to search for land"
-msgstr ""
+msgstr "Retning for at søge efter land"
 
 msgid "Tag ways as"
 msgstr "Tag veje som"
@@ -27720,7 +27832,7 @@ msgid "Source text"
 msgstr "Kilde tekst"
 
 msgid "Lakewalker Plugin Preferences"
-msgstr ""
+msgstr "Lakewalker udvidelses indstilinger"
 
 msgid "A plugin to trace water bodies on Landsat imagery."
 msgstr "En udvidelse til optegning af vandflader på Landsat billeder."
@@ -27734,6 +27846,8 @@ msgid ""
 "Maximum number of nodes to generate before bailing out (before simplifying "
 "lines). Default 50000."
 msgstr ""
+"Maksimalt antal punkter der genereres før der brydes ud (før forenkling af "
+"linjer). Standard 50000."
 
 msgid ""
 "Maximum gray value to accept as water (based on Landsat IR-1 data). Can be "
@@ -27747,6 +27861,8 @@ msgid ""
 "degrees.<br>Lower values give more nodes, and more accurate lines. Default "
 "0.0003."
 msgstr ""
+"Nøjagtighed på Douglas-Peucker line forenkling, målt i grader.<br>Lavere "
+"værdier give flere punkter, og mere præcise linjer. Standard 0,0003."
 
 msgid ""
 "Resolution of Landsat tiles, measured in pixels per degree. Default 4000."
@@ -27840,7 +27956,7 @@ msgid "Continuously center the LiveGPS layer to current position."
 msgstr "Centrer LiveGPS-laget løbende til den nuværende position."
 
 msgid "Open MapDust"
-msgstr "Åben MapDust"
+msgstr "Åbn MapDust"
 
 msgid "MapDust bug reports"
 msgstr "MapDust fejlrapporter"
@@ -27954,7 +28070,7 @@ msgid "Export all images"
 msgstr "Eksporter alle billeder"
 
 msgid "Export selected sequence"
-msgstr "Eksporter valgte billeder"
+msgstr "Eksporter valgte rækkefølge"
 
 msgid "Export selected images"
 msgstr "Eksporter valgte billeder"
@@ -27966,7 +28082,7 @@ msgid "Select a folder"
 msgstr "Vælg en mappe"
 
 msgid "Explore"
-msgstr "Udforsk"
+msgstr "Filstyringsprogram"
 
 msgid "Select a directory"
 msgstr "Vælg en mappe"
@@ -27978,16 +28094,16 @@ msgid "Give way"
 msgstr "Ubetinget vigepligt"
 
 msgid "No entry"
-msgstr "Ingen adgang"
+msgstr "Indkørsel forbudt"
 
 msgid "Intersection danger"
-msgstr "Vejkryds fare"
+msgstr "Farligt vejkryds"
 
 msgid "Mandatory direction (any)"
-msgstr "Obligatorisk retning (enhver)"
+msgstr "Påbudt kørselsretning (enhver)"
 
 msgid "No turn"
-msgstr "Ingen sving"
+msgstr "Sving forbudt"
 
 msgid "Uneven road"
 msgstr "Ujævn vej"
@@ -28010,12 +28126,18 @@ msgstr "Måneder"
 msgid "Days"
 msgstr "Dage"
 
+msgid "Imported images"
+msgstr "Importerede billeder"
+
 msgid "Mapillary filter"
 msgstr "Mapillary filter"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Åbn Mapillary dialog filter"
 
+msgid "Not older than: "
+msgstr "Ikke ældre end: "
+
 msgid "Downloaded images"
 msgstr "Downloadede billeder"
 
@@ -28031,8 +28153,11 @@ msgstr "Mapillary historie"
 msgid "Open Mapillary history dialog"
 msgstr "Åbn Mapillary historie dialog"
 
+msgid "Mapillary picture"
+msgstr "Mapillary billede"
+
 msgid "Open Mapillary window"
-msgstr "Open Mapillary vindue"
+msgstr "Åbn Mapillary vindue"
 
 msgid "Mapillary dialog"
 msgstr "Mapillary dialog"
@@ -28056,13 +28181,13 @@ msgid "Jump to red"
 msgstr "Hop til rød"
 
 msgid "Jumps to the picture at the other side of the red line"
-msgstr "Hopper til billedet i den anden side af den røde linje"
+msgstr "Hopper til billedet i den anden ende af den røde linje"
 
 msgid "Jump to blue"
 msgstr "Hop til blå"
 
 msgid "Jumps to the picture at the other side of the blue line"
-msgstr "Hopper til billedet i den anden side af den blå linje"
+msgstr "Hopper til billedet i den anden ende af den blå linje"
 
 msgid "Stops the walk."
 msgstr "Stopper gåtur."
@@ -28080,10 +28205,10 @@ msgid "Pauses the walk."
 msgstr "Sætter gåturen på pause."
 
 msgid "Reverse buttons position when displaying images."
-msgstr "Vender knapper position, når der vises billeder."
+msgstr "Modsat position af knapper der hvor billeder vises."
 
 msgid "Display hour when the picture was taken"
-msgstr "Vis tid som billedet blev taget"
+msgstr "Vis hvornår billedet blev taget"
 
 msgid "Use 24 hour format"
 msgstr "Brug 24-timers format"
@@ -28257,15 +28382,17 @@ msgid "About Plugin"
 msgstr "Om udvidelse"
 
 msgid "Native password manager plugin"
-msgstr ""
+msgstr "Oprindelig adgangskode håndterings udvidelse"
 
 msgid "No native password manager could be found!"
-msgstr ""
+msgstr "Ingen oprindelig adgangskode håndtering fundet!"
 
 msgid ""
 "Depending on your Operating System / Distribution, you may have to create a "
 "default keyring / wallet first."
 msgstr ""
+"Afhængigt af dit operativsystem / distribution, kan du være nødt til at "
+"oprette en standard nøglering / pung først."
 
 msgid "No thanks, use JOSM''s plain text preferences storage"
 msgstr "Nej tak, brug JOSM''s lager i klar tekst i indstillinger"
@@ -28320,7 +28447,7 @@ msgid "JOSM/OAuth/OSM API/Secret"
 msgstr "JOSM/OAuth/OSM API/Hemmelighed"
 
 msgid "Native Password Manager Plugin"
-msgstr ""
+msgstr "Oprindelig adgangskode håndterings udvidelse"
 
 msgid "The username and password is protected by {0}."
 msgstr "Brugernavn og adgangskode er beskyttet af {0}."
@@ -28364,6 +28491,7 @@ msgstr "Krypter data med Windows logonoplysninger"
 
 msgid "The native password manager plugin detected {0} on your system."
 msgstr ""
+"Den oprindelig adgangskode håndterings udvidelse opdagede {0} på dit system."
 
 msgid "Days without mapping: {0}."
 msgstr "Dage uden kortlægning: {0}."
@@ -28376,31 +28504,31 @@ msgstr ""
 "fra {0})"
 
 msgid "Split by municipality"
-msgstr ""
+msgstr "Opdel efter kommune"
 
 msgid "Split this data by municipality (admin_level=8)."
-msgstr ""
+msgstr "Opdel disse data efter kommune (admin_level = 8)."
 
 msgid "Split by sector"
-msgstr ""
+msgstr "Opdel efter sektor"
 
 msgid "Split this data by sector (admin_level=10)."
-msgstr ""
+msgstr "Opdel disse data efter sektor (admin_level = 10)."
 
 msgid "Split by neighbourhood"
-msgstr ""
+msgstr "Opdel efter nabolag"
 
 msgid "Split this data by neighbourhood (admin_level=11)."
-msgstr ""
+msgstr "Opdel disse data efter nabolag (admin_level = 11)."
 
 msgid "Download open data"
-msgstr ""
+msgstr "Download åbne data"
 
 msgid "License URL not available: {0}"
 msgstr "Licens URL ikke tilgængelig: {0}"
 
 msgid "OpenData preferences"
-msgstr ""
+msgstr "OpenData indstillinger"
 
 msgid "License Agreement"
 msgstr "Licensaftale"
@@ -28421,12 +28549,14 @@ msgid "I refuse these terms and conditions. Cancel download."
 msgstr "Jeg afviser disse vilkår og betingelser. Annuller download."
 
 msgid "Module bundled with opendata plugin"
-msgstr ""
+msgstr "Modul der følger med opendata udvidelse"
 
 msgid ""
 "Please click on <strong>Download list</strong> to download and display a "
 "list of available modules."
 msgstr ""
+"Klik på <strong>Download list</strong> for at download og vise en liste over "
+"tilgængelige moduler."
 
 msgid ""
 "The following module has been downloaded <strong>successfully</strong>:"
@@ -28448,19 +28578,19 @@ msgid "Modules"
 msgstr "Moduler"
 
 msgid "Accept the new module sites and close the dialog"
-msgstr ""
+msgstr "Accepter de nye modul steder og luk dialogen"
 
 msgid "Configure Module Sites"
-msgstr ""
+msgstr "Konfigurer modul steder"
 
 msgid "Download the list of available modules"
-msgstr ""
+msgstr "Download listen over tilgængelige moduler"
 
 msgid "Update modules"
-msgstr ""
+msgstr "Opdater moduler"
 
 msgid "Update the selected modules"
-msgstr ""
+msgstr "Opdater de valgte moduler"
 
 msgid "Please restart JOSM to activate the downloaded modules."
 msgstr "Genstart venligst JOSM for at aktivere de downloadede moduler."
@@ -28469,51 +28599,56 @@ msgid ""
 "All installed modules are up to date. JOSM does not have to download newer "
 "versions."
 msgstr ""
+"Alle installerede moduler er opdaterede. JOSM behøver ikke at hente nyere "
+"versioner."
 
 msgid "Modules up to date"
-msgstr ""
+msgstr "Moduler er opdaterede"
 
 msgid "Configure the list of sites where modules are downloaded from"
-msgstr ""
+msgstr "Konfigurer listen over steder, hvor modulerne er hentet fra"
 
 msgid "Add Open Data Module description URL."
-msgstr ""
+msgstr "Tilføj Open Data modulbeskrivelses URL."
 
 msgid "Edit Open Data Module description URL."
-msgstr ""
+msgstr "Rediger Open Data modulbeskrivelses URL."
 
 msgid "Open Data Module description URL"
-msgstr ""
+msgstr "Open Data modulbeskrivelses URL."
 
 msgid "Download OSM data corresponding to the current data set."
-msgstr ""
+msgstr "Download OSM data svarende til det aktuelle datasæt."
 
 msgid "Diff"
 msgstr "Diff"
 
 msgid "Perform diff between current data set and existing OSM data."
-msgstr ""
+msgstr "Udfør diff mellem aktuelt datasæt og eksisterende OSM data."
 
 msgid "Tools"
 msgstr "Værktøjer"
 
 msgid "Open tools menu for this data."
-msgstr ""
+msgstr "Åbn værktøjs menu til disse data."
 
 msgid "Open the OpenData window."
-msgstr ""
+msgstr "Åbn OpenData vinduet."
 
 msgid "Raw data"
-msgstr ""
+msgstr "Rå data"
 
 msgid "OpenData Preferences"
-msgstr ""
+msgstr "OpenData indstillinger"
 
 msgid ""
 "A special handler for various Open Data portals<br/><br/>Please read the "
 "Terms and Conditions of Use of each portal<br/>before any upload of data "
 "loaded by this plugin."
 msgstr ""
+"En særlig handler til forskellige åbne data portaler <br/> Læs vilkår og "
+"betingelser for brug af hver portal <br/> før nogen upload af data, der "
+"indlæses med denne udvidelse."
 
 msgid "General settings"
 msgstr "Generelle indstillinger"
@@ -28522,33 +28657,39 @@ msgid ""
 "Import only raw data (i.e. do not add/delete tags or replace them by "
 "standard OSM tags)"
 msgstr ""
+"Import kun rådata (dvs. ikke tilføje/slette tags eller erstatte dem med "
+"standard OSM tags)"
 
 msgid "Overpass API server:"
-msgstr ""
+msgstr "Overpass API server:"
 
 msgid "Overpass API server used to download OSM data"
-msgstr ""
+msgstr "Overpass API server der bruges til download af OSM data"
 
 msgid "XAPI server:"
-msgstr ""
+msgstr "XAPI server:"
 
 msgid ""
 "XAPI server used to download OSM data when Overpass API is not available"
 msgstr ""
+"XAPI server der bruges til download af OSM data når Overpass API ikke er "
+"tilgængelig"
 
 msgid "Download modules"
-msgstr ""
+msgstr "Download moduler"
 
 msgid "View summary"
-msgstr ""
+msgstr "Vis sammendrag"
 
 msgid "View full text"
-msgstr ""
+msgstr "Vis den fulde tekst"
 
 msgid ""
 "''Lambert CC 9 zones'' coordinates found with different zone codes for X and "
 "Y: "
 msgstr ""
+"''Lambert CC 9 zoner'' koordinater fundet med forskellige zone koder for X "
+"og Y: "
 
 msgid "Downloading data..."
 msgstr "Downloader data..."
@@ -28557,7 +28698,7 @@ msgid "OpenData XML files"
 msgstr "OpenData XML filer"
 
 msgid "File to load"
-msgstr ""
+msgstr "Fil der skal indlæse"
 
 msgid "7Zip Files"
 msgstr "7Zip filer"
@@ -28598,12 +28739,14 @@ msgid "MapInfo files"
 msgstr "MapInfo filer"
 
 msgid "Shapefiles"
-msgstr "Shapefiler"
+msgstr "Formfiler"
 
 msgid ""
 "Unable to detect Coordinate Reference System.\n"
 "Would you like to fallback to ESPG:4326 (WGS 84) ?"
 msgstr ""
+"Kan ikke finde koordinatsystem.\n"
+"Vil du falde tilbage til EPSG:4326 (WGS 84)?"
 
 msgid "Warning: CRS not found"
 msgstr "Advarsel: CRS ikke fundet"
@@ -28612,10 +28755,10 @@ msgid "Unable to detect CRS !"
 msgstr "Kan ikke finde CRS !"
 
 msgid "Unable to find a data store for file {0}"
-msgstr ""
+msgstr "Kan ikke finde et datalager til fil {0}"
 
 msgid "Loading shapefile ({0} features)"
-msgstr ""
+msgstr "Loading formfil ({0} funktioner)"
 
 msgid "CSV files"
 msgstr "CSV filer"
@@ -28624,10 +28767,11 @@ msgid "ODS files"
 msgstr "ODS filer"
 
 msgid "No valid coordinates have been found."
-msgstr ""
+msgstr "Ingen gyldige koordinater er blevet fundet."
 
 msgid "Invalid file. Bad length on line {0}. Expected {1} columns, got {2}."
 msgstr ""
+"Ugyldig fil. Forkert længde på line {0}. Forventede {1} kolonner, fik {2}."
 
 msgid "XLS files"
 msgstr "XLS filer"
@@ -28636,89 +28780,99 @@ msgid "View OSM Wiki page"
 msgstr "Vis OSM Wiki side"
 
 msgid "Launch browser to the OSM Wiki page of the selected data set"
-msgstr ""
+msgstr "Start browser med OSM Wiki side til det valgte datasæt"
 
 msgid "View Local Portal page"
-msgstr ""
+msgstr "Vis lokal portal side"
 
 msgid "Launch browser to the local portal page of the selected data set"
-msgstr ""
+msgstr "Start browser med den lokale portal side til det valgte datasæt"
 
 msgid "View National Portal page"
-msgstr ""
+msgstr "Vis national portal side"
 
 msgid "Launch browser to the national portal page of the selected data set"
-msgstr ""
+msgstr "Start browser med den nationale portal til det valgte datasæt"
 
 msgid "View License"
-msgstr ""
+msgstr "Vis licens"
 
 msgid "Launch browser to the license page of the selected data set"
-msgstr ""
+msgstr "Start browser med licens siden til det valgte datasæt"
 
 msgid "View License (summary)"
-msgstr ""
+msgstr "Vis licens (sammendrag)"
 
 msgid "Launch browser to the summary license page of the selected data set"
-msgstr ""
+msgstr "Start browser med sammendrag af licens siden til det valgte datasæt"
 
 msgid "View the license of the selected data set"
-msgstr ""
+msgstr "Vis licensen til det valgte datasæt"
 
 msgid ""
 "Warning: Cannot download module ''{0}''. Its download link is not known. "
 "Skipping download."
 msgstr ""
+"Advarsel: Kan ikke download modulet ''{0}''. Dets downloadlink er ikke "
+"kendt. Springer over download."
 
 msgid ""
 "Warning: Cannot download module ''{0}''. Its download link ''{1}'' is not a "
 "valid URL. Skipping download."
 msgstr ""
+"Advarsel: Kan ikke hente modulet ''{0}''. Dets downloadlink ''{1}'' er ikke "
+"en gyldig URL. Springer over download."
 
 msgid "Downloading Module {0}..."
-msgstr ""
+msgstr "Downloader modulet {0}..."
 
 msgid "An error occurred in module {0}"
-msgstr ""
+msgstr "Der opstod en fejl i modul {0}"
 
 msgid "Last module update more than {0} days ago."
-msgstr ""
+msgstr "Seneste modul opdatering mere end {0} dage siden."
 
 msgid "Click to update the activated modules"
-msgstr ""
+msgstr "Klik for at opdatere de aktiverede moduler"
 
 msgid "Click to skip updating the activated modules"
-msgstr ""
+msgstr "Klik for at springe over opdatering af de aktiverede moduler"
 
 msgid ""
 "Skipping module update after elapsed update interval. Automatic update at "
 "startup is disabled."
 msgstr ""
+"Springer over modul opdatering efter forløbet opdaterings interval. "
+"Automatisk opdatering ved opstart er deaktiveret."
 
 msgid ""
 "Running module update after elapsed update interval. Automatic update at "
 "startup is disabled."
 msgstr ""
+"Kør modul opdatering efter forløbet opdaterings interval. Automatisk "
+"opdatering ved opstart er deaktiveret."
 
 msgid "Could not load module {0}. Delete from preferences?"
-msgstr ""
+msgstr "Kunne ikke indlæse modulet {0}. Slet fra indstilliger?"
 
 msgid "loading module ''{0}'' (version {1})"
-msgstr ""
+msgstr "indlæser modulet ''{0}'' (version {1})"
 
 msgid ""
 "<html>Could not load module {0} because the module<br>main class ''{1}'' was "
 "not found.<br>Delete from preferences?</html>"
 msgstr ""
+"<html>Kunne ikke indlæse modulet {0} fordi modulets<br>hoved klasse ''{1}'' "
+"ikke blev fundet.<br>Slet fra indstillinger?</html>"
 
 msgid "Loading modules ..."
-msgstr ""
+msgstr "Indlæser moduler ..."
 
 msgid "Checking module preconditions..."
-msgstr ""
+msgstr "Undersøger modul forudsætninger..."
 
 msgid "Loading module ''{0}''..."
-msgstr ""
+msgstr "Indlæser modul ''{0}''..."
 
 msgid "JOSM could not find information about the following module:"
 msgid_plural "JOSM could not find information about the following modules:"
@@ -28736,96 +28890,108 @@ msgstr[0] "Opdatering af følgende modul mislykkedes:"
 msgstr[1] "Opdatering af følgende moduler mislykkedes:"
 
 msgid "Module update failed"
-msgstr ""
+msgstr "Modul opdatering fejlede"
 
 msgid "Warning: failed to download module information list"
-msgstr ""
+msgstr "Advarsel: kunne ikke download modul informations liste"
 
 msgid "Disable module"
-msgstr ""
+msgstr "Deaktiver modul"
 
 msgid "Click to delete the module ''{0}''"
-msgstr ""
+msgstr "Klik for at slette modulet ''{0}''"
 
 msgid "Keep module"
-msgstr ""
+msgstr "Behold modul"
 
 msgid "Click to keep the module ''{0}''"
-msgstr ""
+msgstr "Klik for at beholde modulet ''{0}''"
 
 msgid "Warning: failed to delete outdated module ''{0}''."
-msgstr ""
+msgstr "Advarsel: kunne ikke slette forældet modul ''{0}''."
 
 msgid ""
 "Warning: failed to install already downloaded module ''{0}''. Skipping "
 "installation. JOSM is still going to load the old module version."
 msgstr ""
+"Advarsel: kunne ikke installere allerede downloadet modul ''{0}''. Springer "
+"over installation. JOSM fortsætter med at indlæse den gamle version af modul."
 
 msgid ""
 "Warning: failed to install module ''{0}'' from temporary download file "
 "''{1}''. Renaming failed."
 msgstr ""
+"Advarsel: kunne ikke  installere modul ''{0}'' fra midlertidig downloade fil "
+"''{1}''. Omdøbning fejlede."
 
 msgid ""
 "Do not ask again and remember my decision (go to Preferences->Modules to "
 "change it later)"
 msgstr ""
+"Spørg ikke igen og husk min beslutning (gå til Indstillinger->Moduler for at "
+"ændre det senere)"
 
 msgid "The module file ''{0}'' does not include a Manifest."
-msgstr ""
+msgstr "Modul filen ''{0}'' indeholder ikke et manifest."
 
 msgid "Invalid URL ''{0}'' in module {1}"
-msgstr ""
+msgstr "Ugyldig URL ''{0}'' i modul {1}"
 
 msgid "<b>Module provided by an external source:</b> {0}"
-msgstr ""
+msgstr "<b>Modul leveret af en ekstern kilde:</b> {0}"
 
 msgid "Failed to create module information from manifest for module ''{0}''"
-msgstr ""
+msgstr "Kunne ikke oprette modul oplysninger fra manifest for modul ''{0}''"
 
 msgid "Illegal entry in module list."
-msgstr ""
+msgstr "Ulovlig post i modul listen."
 
 msgid "Reading local module information.."
-msgstr ""
+msgstr "Læser lokal modul oplysning.."
 
 msgid "Processing module site cache files..."
-msgstr ""
+msgstr "Behander modul websted cache filer..."
 
 msgid ""
 "Warning: Failed to scan file ''{0}'' for module information. Skipping."
 msgstr ""
+"Advarsel: Kunne ikke scanne filen ''{0}'' for modul oplysninger. Springer "
+"over."
 
 msgid "Processing module site cache icon files..."
-msgstr ""
+msgstr "Behandler modul websted cache ikon filer..."
 
 msgid "Processing module files..."
-msgstr ""
+msgstr "Behandler modul filer..."
 
 msgid "Download module list..."
-msgstr ""
+msgstr "Download modul liste..."
 
 msgid "Downloading module list from ''{0}''"
-msgstr ""
+msgstr "Downloader modul list fra ''{0}''"
 
 msgid ""
 "Warning: failed to create module directory ''{0}''. Cannot cache module list "
 "from module site ''{1}''."
 msgstr ""
+"Advarsel: kunne ikke oprette modul mappe ''{0}''. Kan ikke cache modul liste "
+"fra modul websted ''{1}''."
 
 msgid "Writing module list to local cache ''{0}''"
-msgstr ""
+msgstr "Skriver modul liste til den lokale cache ''{0}''"
 
 msgid "Parsing module list from site ''{0}''"
-msgstr ""
+msgstr "Fortolker modul liste fra webstedet ''{0}''"
 
 msgid ""
 "Failed to parse module list document from site ''{0}''. Skipping site. "
 "Exception was: {1}"
 msgstr ""
+"Kunne ikke fortolke modul liste dokument fra websted ''{0}''. Springer over "
+"websted. Handlingen var: {1}"
 
 msgid "Processing module list from site ''{0}''"
-msgstr ""
+msgstr "Behandler modul liste fra webstedet ''{0}''"
 
 msgid "Open Visible..."
 msgstr "Åbn synlig..."
@@ -28856,7 +29022,7 @@ msgid "Firefox executable"
 msgstr "Firefox-programfil"
 
 msgid "OSM Server Files pbf compressed"
-msgstr ""
+msgstr "OSM Server filer pbf komprimeret"
 
 msgid "Download PBF"
 msgstr "Download PBF"
@@ -28868,7 +29034,7 @@ msgid "Invalid timestamp: {0}"
 msgstr "Ugyldig tidsstempel: {0}"
 
 msgid "Invalid DenseNodes key/values table"
-msgstr ""
+msgstr "Ugyldig TætPunkts nøgle/værdier tabel"
 
 msgid "Reading OSM data..."
 msgstr "Indlæser OSM data..."
@@ -28892,7 +29058,7 @@ msgid "Finished"
 msgstr "Færdig"
 
 msgid "Prefs"
-msgstr ""
+msgstr "Indst"
 
 msgid "Load file..."
 msgstr "Indlæs fil..."
@@ -28925,7 +29091,7 @@ msgid "Remove parallel lines"
 msgstr "Fjern parallelle linjer"
 
 msgid "Take only first X paths"
-msgstr ""
+msgstr "Tag kun første X stier"
 
 msgid "Color/width change"
 msgstr "Farve/bredde ændring"
@@ -29087,11 +29253,11 @@ msgid "Write error: "
 msgstr "Skrivefejl: "
 
 msgid "Write coordinates to image header"
-msgstr ""
+msgstr "Skriv koordinater til billedehoved"
 
 msgid ""
 "Write position information into the exif header of the following files:"
-msgstr ""
+msgstr "Skriv positionsoplysninger ind i exif-hoved på følgende filer:"
 
 msgid "settings"
 msgstr "indstillinger"
@@ -29130,7 +29296,7 @@ msgid "Could not rename file {0} to {1}!"
 msgstr "Kunne ikke omdøbe filen {0} til {1}!"
 
 msgid "<html><h3>There are old backup files in the image directory!</h3>"
-msgstr ""
+msgstr "<html><h3>Der er gamle backup-filer i billede mappen!</h3>"
 
 msgid "Override old backup files?"
 msgstr "Overskriv gamle backup filer?"
@@ -29160,15 +29326,17 @@ msgid ""
 "Click+drag photo, shift+click to position photo, control+click to set "
 "direction."
 msgstr ""
+"Klik+træk foto, shift+klik for at placere foto, kontrol+klik til at sæt "
+"retning."
 
 msgid "Please load some photos."
-msgstr ""
+msgstr "Indlæs nogle billeder."
 
 msgid "New layer for untagged images"
-msgstr ""
+msgstr "Nyt lag for utaggede billeder"
 
 msgid "Untagged Images"
-msgstr ""
+msgstr "Utaggede billeder"
 
 msgid "Do you want to save current calibration of layer {0}?"
 msgstr ""
@@ -29288,7 +29456,7 @@ msgid "PicLayer Remove point"
 msgstr ""
 
 msgid "Point removed"
-msgstr ""
+msgstr "Punkt fjernet"
 
 msgid "Remove point on the picture"
 msgstr ""
@@ -29321,8 +29489,7 @@ msgid "The clipboard data is not an image"
 msgstr "Udklipsholder data er ikke et billede"
 
 msgid "Warning: failed to handle zip file ''{0}''. Exception was: {1}"
-msgstr ""
-"Advarsel: kunne ikke håndtere zip filen \"{0}\". Undtagelsen var: {1}"
+msgstr "Advarsel: kunne ikke håndtere zip fil \"{0}\". Handling var: {1}"
 
 msgid "A calibration file associated to the picture file was found: {0}\n"
 msgstr ""
@@ -29349,58 +29516,58 @@ msgid ""
 msgstr ""
 
 msgid "Point info"
-msgstr ""
+msgstr "Punkt info"
 
 msgid "Point info."
-msgstr ""
+msgstr "Punkt info."
 
 msgid "Connecting server"
-msgstr ""
+msgstr "Forbinder til server"
 
 msgid "PointInfo"
-msgstr ""
+msgstr "Punktinfo"
 
 msgid "Data not available."
-msgstr ""
+msgstr "Data ikke tilgængelig."
 
 msgid "Add new address point"
-msgstr ""
+msgstr "Tilføj nyt adresse punkt"
 
 msgid "Tags copied to clipboard."
-msgstr ""
+msgstr "Tags kopieret til udklipsholderen."
 
 msgid "New address point added."
-msgstr ""
+msgstr "Nyt adresse punkt tilføjet."
 
 msgid "Download Osmosis poly"
-msgstr ""
+msgstr "Download Osmosis poly"
 
 msgid "Reading polygon filter file..."
-msgstr ""
+msgstr "Læser polygon filter fil..."
 
 msgid "Error reading poly file: {0}"
-msgstr ""
+msgstr "Fejl ved læsning af poly fil: {0}"
 
 msgid "The file must begin with a polygon name"
-msgstr ""
+msgstr "Filen skal begynde med et polygon navn"
 
 msgid "There are less than 2 points in an area"
-msgstr ""
+msgstr "Der er mindre end 2 punkter i et område"
 
 msgid "A polygon coordinate line must contain exactly 2 numbers"
-msgstr ""
+msgstr "En polygon koordinat linje skal indeholde præcis 2 numre"
 
 msgid "Unable to parse {0} as a number"
-msgstr ""
+msgstr "Kan ikke parse {0} som et tal"
 
 msgid "Invalid coordinates were found: {0}, {1}"
-msgstr ""
+msgstr "Ugyldige koordinater blev fundet: {0}, {1}"
 
 msgid "{0} points were outside world bounds and were moved"
-msgstr "{0} punkter var uden verdens grænser og blev flyttet"
+msgstr "{0} punkter var udenfor verdens grænser og blev flyttet"
 
 msgid "Osmosis polygon filter files"
-msgstr ""
+msgstr "Osmosis polygon filter filer"
 
 msgid "Print..."
 msgstr "Udskriv..."
@@ -29729,31 +29896,31 @@ msgid "Public Transport: Edit waypoint name"
 msgstr "Offentlig transport: Rediger waypoint-navn"
 
 msgid "Public transport routes"
-msgstr ""
+msgstr "Offentlig transportrute"
 
 msgid "Toggle direction arrows"
-msgstr ""
+msgstr "Skift retningspile"
 
 msgid "Toggle reference labels"
-msgstr ""
+msgstr "Skift reference etiketter"
 
 msgid "Visualize public transport routes"
-msgstr ""
+msgstr "Synliggør offentlig transportrute"
 
 msgid "Filters"
-msgstr ""
+msgstr "Filtrene"
 
 msgid "Choose Filter"
-msgstr ""
+msgstr "Vælg filter"
 
 msgid "JSlider initialization error. Make sure your meta-inf is correct."
-msgstr ""
+msgstr "JSlider initialiserings fejl. Sørg for at din meta-inf er korrekt."
 
 msgid "Relation Toolbox"
 msgstr "Relations værktøjskasse"
 
 msgid "Open relation/multipolygon editor panel"
-msgstr "Åben relation/multipolygon redigeringspanel"
+msgstr "Åbn relation/multipolygon redigeringspanel"
 
 msgid "Specify role"
 msgstr "Angiv rolle"
@@ -29765,16 +29932,16 @@ msgid "Create administrative boundary relations"
 msgstr "Opret administrative grænse-relationer"
 
 msgid "Add tags boundary and admin_level to boundary relation ways"
-msgstr ""
+msgstr "Tilføj tag grænse og admin_level til grænse relations veje"
 
 msgid "Move area tags from contour to relation"
-msgstr ""
+msgstr "Flyt område tag fra konturen til relation"
 
 msgid "When moving tags, consider even non-repeating ones"
-msgstr ""
+msgstr "Ved flytning af tag, overvej også de ikke-gentagne"
 
 msgid "Always split ways of neighbouring multipolygons"
-msgstr ""
+msgstr "Del altid veje ved tilstødende multipolygoner"
 
 msgid "Change role"
 msgstr "Skift rolle"
@@ -29826,12 +29993,13 @@ msgstr "Download referencer"
 
 msgid "Download referrers for the chosen relation and its members."
 msgstr ""
+"Download steder der henviser til den valgte relation og dens medlemmer."
 
 msgid "Duplicate relation"
-msgstr ""
+msgstr "Dupliker relation"
 
 msgid "Open relation editor for the chosen relation"
-msgstr "Åben relationseditor for den valgte relation"
+msgstr "Åbn relationseditor for den valgte relation"
 
 msgid "Find a relation"
 msgstr "Find en relation"
@@ -29852,7 +30020,7 @@ msgid "Reconstruct route"
 msgstr "Genopbyg rute"
 
 msgid "Open relation wiki page"
-msgstr "Åben relation wiki side"
+msgstr "Åbn relation wiki side"
 
 msgid "Select relation in main selection."
 msgstr "Vælg relation i hovedmarkering."
@@ -29924,7 +30092,7 @@ msgid "Downloading objects history"
 msgstr "Downloader objekters historie"
 
 msgid "Missing merge target for {0} with id {1}"
-msgstr ""
+msgstr "Manglende sammenlægnings mål for {0} med id {1}"
 
 msgid "Objects history"
 msgstr "Objekts historik"
@@ -30021,7 +30189,7 @@ msgid "Add tags by clicking on road signs"
 msgstr "Tilføj tags ved at klikke på vejskilte"
 
 msgid "Roadsigns plugin: open dialog"
-msgstr "Vejskilt-udvidelse: åben dialog"
+msgstr "Vejskilt-udvidelse: åbn dialog"
 
 msgid "custom"
 msgstr "tilpasset"
@@ -30099,7 +30267,7 @@ msgid "Clear route"
 msgstr "Fjern rute"
 
 msgid "Reconstruct Graph"
-msgstr ""
+msgstr "Genopbyg graf"
 
 msgid "Routing Plugin Preferences"
 msgstr "Indstillinger for Ruteplan-udvidelse"
@@ -30123,7 +30291,7 @@ msgid "Preference ''{0}'' missing. Cannot initialize SdsApi."
 msgstr "Indstilling ''{0}'' mangler. Kan ikke initialisere SdsApi."
 
 msgid "Proxy Authentication Required"
-msgstr ""
+msgstr "Proxy godkendelse krævet"
 
 msgid ""
 "<html><body><p class=\"warning-body\"><strong>Warning:</strong> The password "
@@ -30145,6 +30313,8 @@ msgid ""
 "Authenticating at the SDS API ''{0}'' failed. Please enter a valid username "
 "and a valid password."
 msgstr ""
+"Godkendelse ved SDS API ''{0}'' fejlede. Indtast et gyldigt brugernavn og en "
+"gyldig adgangskode."
 
 msgid "SDS data file"
 msgstr "SDS data fil"
@@ -30171,10 +30341,10 @@ msgid "Open a preferences dialog for SDS."
 msgstr "Åbn en indstillingsdialog til SDS."
 
 msgid "Separate Data Store"
-msgstr ""
+msgstr "Separat datalager"
 
 msgid "Configures access to the Separate Data Store."
-msgstr ""
+msgstr "Konfigurerer adgang til det separate datalager.."
 
 msgid "Server"
 msgstr "Server"
@@ -30226,7 +30396,7 @@ msgid "Save..."
 msgstr "Gem..."
 
 msgid "Save the current separate data store information to a file."
-msgstr ""
+msgstr "Gem det nuværende separate datalager information til en fil."
 
 msgid "Save SDS file"
 msgstr "Gem SDS fil"
@@ -30268,7 +30438,7 @@ msgid "Delete nodes outside of data regions?"
 msgstr "Slet punkter udenfor de downloadede områder?"
 
 msgid "average nearby nodes"
-msgstr ""
+msgstr "gennemsnit af punkter i nærheden"
 
 msgid ""
 "Node of the way (area) is removed if all of <u>Angle Weight</u>, <u>Area "
@@ -30284,51 +30454,63 @@ msgid ""
 "another step of the simplification that merges adjanced nodes that are "
 "closer than <u>Threshold</u> meters."
 msgstr ""
+"Punkter i vejen (område) fjernes hvis alle <u>Vinkel vægt</u>, <u>Område "
+"vægt</u> og <u>Afstands vægt</u> er større end 1. <u>Vægt</u> beregnes som "
+"<u>Værdi</u> / <u>Grænseværdi</u>, hvor <u>Værdi</u> er en af <u> "
+"Vinkel</u>, <u>Område</u> og <u>Afstand</u> beregnet ud fra hver tre "
+"tilstødende punkter i vejen. <ul><li><u>Værdi</u> af <u>Vinkel</u> er "
+"vinklen i grader på det andet punkt </li><li><u>Værdi</u> af <u>Område</u> "
+"er området dannet af trekant </li><li> <u>Værdi</u> fra <u>Afstand</u> er "
+"afdrift afstand</li></ul>Alle tre <u>Vægt</u>e ganget med deres "
+"<u>faktor</u> summeres og punkt med laveste sum fjernes først. Fjernelse "
+"fortsætter, indtil der ikke er nogen punkter at fjerne. Lægge punkter i "
+"nærheden sammen er endnu et skridt i forenklingen som lægger tilstødende "
+"punkter sammen, der er tættere end <u>Grænseværdi</u> meter."
 
 msgid "Angle Threshold"
-msgstr ""
+msgstr "Grænseværdi for vinkel"
 
 msgid "Angle Factor"
-msgstr ""
+msgstr "Vinkel faktor"
 
 msgid "Area Threshold"
-msgstr ""
+msgstr "Grænseværdi for område"
 
 msgid "Area Factor"
-msgstr ""
+msgstr "Område faktor"
 
 msgid "Distance Threshold"
-msgstr ""
+msgstr "Grænseværdi for afstand"
 
 msgid "Distance Factor"
-msgstr ""
+msgstr "Afstands faktor"
 
 msgid "Merge Nearby Nodes Threshold"
-msgstr ""
+msgstr "Grænseværdi for at lægge punkter i nærheden sammen"
 
 msgid "SeaMap Editor"
 msgstr "Søkort editor"
 
 msgid "Spline drawing"
-msgstr ""
+msgstr "Kurve tegning"
 
 msgid "Draw a spline curve"
-msgstr ""
+msgstr "Tegn en kurve"
 
 msgid "Spline goes outside of the world."
-msgstr ""
+msgstr "Kurve går uden for verden."
 
 msgid "Add an existing node to spline: {0}"
-msgstr ""
+msgstr "Tilføj et eksisterende punkt til kurve: {0}"
 
 msgid "Add a new node to spline: {0}"
-msgstr ""
+msgstr "Tilføj et nyt punkt til kurve: {0}"
 
 msgid "Delete spline node {0}"
-msgstr ""
+msgstr "Slet kurve punkt {0}"
 
 msgid "Finish spline"
-msgstr ""
+msgstr "Afslut kurve"
 
 msgid "Splines"
 msgstr "Kurver"
@@ -30368,7 +30550,8 @@ msgstr ""
 "Dubleret genvejstast til knappen ''{0}'' - knappen vil blive ignoreret!"
 
 msgid "SurveyorPlugin needs LiveGpsPlugin, but could not find it!"
-msgstr "Landmålermodul har brug for LiveGpsmodul, men kunne ikke finde den."
+msgstr ""
+"Landmåler udvidelse har brug for LiveGps udvidelse, men kunne ikke finde den."
 
 msgid "Surveyor..."
 msgstr "Landmåler..."
@@ -30386,7 +30569,7 @@ msgid "Error parsing {0}: {1}"
 msgstr "Fejl ved fortolkning af {0}: {1}"
 
 msgid "Surveyor waypoint layer"
-msgstr ""
+msgstr "Landmåler waypoint lag"
 
 msgid "{0} start"
 msgstr "{0} start"
@@ -30544,6 +30727,64 @@ msgstr ""
 msgid "Terrace"
 msgstr "Rækkehus"
 
+msgid "To-fix"
+msgstr "Skal-rettes"
+
+msgid "Open to-fix window."
+msgstr "Åbn skal-rettes vindue"
+
+msgid "Tool:To-fix"
+msgstr "Værktøj:Skal-rettes"
+
+msgid "Skip"
+msgstr "Spring over"
+
+msgid "Skip Error"
+msgstr "Spring over fejl"
+
+msgid "Fixed"
+msgstr "Rettet"
+
+msgid "Fixed Error"
+msgstr "Rettet fejl"
+
+msgid "Not an error"
+msgstr "Ikke en fejl"
+
+msgid "Set download area (m²)"
+msgstr "Sæt download område (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "skal-rettes:Spring over emne"
+
+msgid "tofix:Fixed item"
+msgstr "skal-rettes:Ret emne"
+
+msgid "tofix:Not a Error item"
+msgstr "skal-rettes:Ikke et fejl emne"
+
+msgid "Maintenance server"
+msgstr "Vedligeholdelses server"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Noget gik galt opdater udvidelse eller rapporter et problem på <a "
+"href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Noget gik galt, prøv igen"
+
+msgid "Cannot place a node outside of the world."
+msgstr "Kan ikke placere et punkt uden for verdenen."
+
+msgid "Layer to draw OSM error"
+msgstr "Lag til at tegne OSM fejl"
+
 msgid "Browse"
 msgstr "Gennemse"
 
@@ -30554,19 +30795,19 @@ msgid "Merge objects nodes"
 msgstr "Læg objekters punkter sammen"
 
 msgid "Tracer"
-msgstr ""
+msgstr "Tracer"
 
 msgid "Tracer."
-msgstr ""
+msgstr "Tracer."
 
 msgid "Tracer building"
-msgstr ""
+msgstr "Optegner bygning"
 
 msgid "Tracer2"
-msgstr ""
+msgstr "Tracer2"
 
 msgid "Tracer2."
-msgstr ""
+msgstr "Tracer2."
 
 msgid "Change tag {0} to {1}"
 msgstr "Ret tag {0} til {1}"
@@ -30576,11 +30817,16 @@ msgid ""
 "download version {0} from\n"
 "{1}."
 msgstr ""
+"Tracer2Server versionen er ikke kompatibel med denne udvidelse. Download "
+"udgave {0} fra\n"
+"{1}."
 
 msgid ""
 "New version of Tracer2Server is available. For best results please upgrade "
 "to version {0}."
 msgstr ""
+"Ny version af Tracer2Server er tilgængelig. For det bedste resultat skal du "
+"opgrader til version {0}."
 
 msgid "No set of parameter is active!"
 msgstr "Intet sæt af parameter er aktivt!"
@@ -30589,10 +30835,10 @@ msgid "Select parameter"
 msgstr "Vælg parameter"
 
 msgid "Tracer2: add a way with {0} points"
-msgstr ""
+msgstr "Tracer2: tilføj en vej med {0} punkter"
 
 msgid "Tracer2: modify way to {0} points"
-msgstr ""
+msgstr "Tracer2: ændre vej til {0} punkter"
 
 msgid "Tracer2 error"
 msgstr "Tracer2 fejl"
@@ -30607,7 +30853,7 @@ msgid "Mode:"
 msgstr "Tilstand:"
 
 msgid "Threshold:"
-msgstr ""
+msgstr "Grænseværdi:"
 
 msgid "Points per circle:"
 msgstr "Punkter per cirkel:"
@@ -30625,13 +30871,13 @@ msgid "Add new"
 msgstr "Tilføj ny"
 
 msgid "Add predefined"
-msgstr ""
+msgstr "Tilføj foruddefineret"
 
 msgid "Select predefined parameter"
-msgstr ""
+msgstr "Vælg foruddefineret parameter"
 
 msgid "Modify list of parameter for server request."
-msgstr ""
+msgstr "Ændre listen over parameter for serverens forspørgelse."
 
 msgid "Parameter:"
 msgstr "Parameter:"
@@ -30641,9 +30887,12 @@ msgid ""
 "If you don''t have the server, please download it from\n"
 "{0}."
 msgstr ""
+"Tracer2Server kører ikke. Start serveren.\n"
+"Hvis du ikke har serveren, kan du downloade den fra\n"
+"{0}."
 
 msgid "Tracer2Server hasn''t found anything."
-msgstr ""
+msgstr "Tracer2Server har ikke fundet noget."
 
 msgid "Tracer2Server has detected an error."
 msgstr "Tracer2Server har fundet en fejl."
@@ -30686,7 +30935,7 @@ msgstr "Download underskrevet data"
 
 msgid "Warning: Ignoring exception because task was canceled. Exception: {0}"
 msgstr ""
-"Advarsel: Ignorerer undtagelsen da opgaven blev annulleret. Undtagelse: {0}"
+"Advarsel: Ignorerer handling da opgaven blev annulleret. Handling: {0}"
 
 msgid ""
 "Generating new Keypair.\n"
@@ -30902,10 +31151,10 @@ msgid "Choose Bitlength (Strength):"
 msgstr "Vælg bitlængde (styrke):"
 
 msgid "Encryption algorithm to protect private key:"
-msgstr ""
+msgstr "Krypteringsalgoritme til at beskytte den private nøgle:"
 
 msgid "Choose an expiry date for the key:"
-msgstr ""
+msgstr "Vælg en udløbsdato for nøglen:"
 
 msgid "Create a new signing key"
 msgstr ""
@@ -31288,7 +31537,7 @@ msgid "Display and manage turn restrictions in the current data set"
 msgstr "Vis og administrer svingbegrænsninger i det aktuelle datasæt"
 
 msgid "Open an editor for the selected turn restriction"
-msgstr "Åben en editor for den markerede svingbegrænsning"
+msgstr "Åbn en editor for den markerede svingbegrænsning"
 
 msgid "Delete the selected turn restriction"
 msgstr "Slet den markerede svingbegrænsning"
@@ -31900,16 +32149,16 @@ msgid "Replace geometry for way {0}"
 msgstr "Erstat geometri for vej {0}"
 
 msgid "Range of child primitives count"
-msgstr ""
+msgstr "Område for barn primitiver tæller"
 
 msgid "Range of parent primitives count"
-msgstr ""
+msgstr "Område for forældre primitiver tæller"
 
 msgid "Range of referencing relation count"
-msgstr ""
+msgstr "Område for reference relations tæller"
 
 msgid "Range of attached ways count"
-msgstr ""
+msgstr "Område for tilknytede veje tæller"
 
 msgid "Adjacent nodes"
 msgstr "Tilstødende punkter"
@@ -32073,10 +32322,10 @@ msgid "Loop"
 msgstr "Loop"
 
 msgid "loops n sec around current position"
-msgstr ""
+msgstr "loop n sek omkring den aktuelle position"
 
 msgid "Keep centered"
-msgstr ""
+msgstr "Hold centreret"
 
 msgid "follows the video icon automatically"
 msgstr "følger videoikonet automatisk"
@@ -32097,10 +32346,10 @@ msgid "Jump in video for x ms"
 msgstr "Hop i video med x ms"
 
 msgid "Loop length"
-msgstr ""
+msgstr "Loop længde"
 
 msgid "Set the length around a looppoint"
-msgstr ""
+msgstr "Sæt længden omkring et looppunkt"
 
 msgid "no deinterlacing"
 msgstr "ingen deinterlacing"
@@ -32299,7 +32548,7 @@ msgid "clipboard"
 msgstr "udklipsholder"
 
 msgid "Open Article"
-msgstr "Åben artikel"
+msgstr "Åbn artikel"
 
 msgid "Opens the Wikipedia article of the selected item in a browser"
 msgstr "Åbner Wikipedia-artiklen for det markerede objekt i en browser"
diff --git a/i18n/po/de.po b/i18n/po/de.po
index 356db1c..24ce1d4 100644
--- a/i18n/po/de.po
+++ b/i18n/po/de.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-09 18:36+0000\n"
-"Last-Translator: Klumbumbus <Unknown>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 20:38+0000\n"
+"Last-Translator: Simon Legner <Unknown>\n"
 "Language-Team: JOSM\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:42+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:41+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: de\n"
 "X-Poedit-SearchPath-0: .\n"
 "X-Poedit-Basepath: /home/simon/src/josm.all/i18n\n"
@@ -75,7 +75,7 @@ msgid "Cause: "
 msgstr "Ursache: "
 
 msgid "Executing platform startup hook"
-msgstr "Plattform-Starteinschubmethode wird ausgeführt"
+msgstr "\"platform startup hook\" wird ausgeführt"
 
 msgid "Building main menu"
 msgstr "Hauptmenü wird aufgebaut"
@@ -1504,6 +1504,15 @@ msgstr[1] ""
 "Mindestens ein gewählter Punkt wird von mehreren Linien verwendet. Bitte "
 "auch die Linie auswählen."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Welcher Linienabschnitt soll die Chronik von {0} übernehmen?"
+
+msgid " [id: {0}]"
+msgstr " [Kennung: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Abschnitt {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Sie müssen zwei oder mehr Punkte auswählen, um eine kreisförmige Linie "
@@ -2307,19 +2316,11 @@ msgstr ""
 "Klicken, um den hervorgehobenen Punkt zu verschieben. Strg drücken zum "
 "Hinzufügen von Punkten oder Alt zum Löschen."
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-"Ein Punkt kann nicht außerhalb des heruntergeladenen Bereichs platziert "
-"werden."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Einen neuen Punkt zum Weg hinzufügen"
 msgstr[1] "Einen neuen Punkt zu {0} Wegen hinzufügen"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Kann von mehreren Objekten verwendeten Punkt nicht löschen"
-
 msgid "Cannot delete node that has tags"
 msgstr "Kann Punkt mit Merkmalen nicht löschen"
 
@@ -2769,6 +2770,12 @@ msgstr "Alle Kindobjekte entsprechen dem Ausdruck"
 msgid "all parents of objects matching the expression"
 msgstr "Alle Elternobjekte entsprechen dem Ausdruck"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "Relation mit Element der Rolle <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "Objekte einer Relation als Rolle <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-tes Element einer Relation und/oder n-ter Punkt eines Weges"
 
@@ -2794,6 +2801,14 @@ msgstr ""
 "Objekte (und alle Linienpunkte / Relationselemente) im heruntergeladenen "
 "Bereich"
 
+msgid "Searching"
+msgstr "Suche …"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Suche in {0} Objekt"
+msgstr[1] "Suche in {0} Objekten"
+
 msgid "No match found for ''{0}''"
 msgstr "Nichts gefunden für Suche ''{0}''"
 
@@ -4818,9 +4833,6 @@ msgstr "Nicht noch einmal zeigen (Sitzung)"
 msgid "Do not show again (remembers choice)"
 msgstr "Nicht noch einmal zeigen (speichert Auswahl)"
 
-msgid " [id: {0}]"
-msgstr " [Kennung: {0}]"
-
 msgid "incomplete"
 msgstr "unvollständig"
 
@@ -8529,9 +8541,9 @@ msgstr ""
 "fehlt</p><p class=\"warning-body\">Inhalt der Hilfe für das Hilfethema "
 "<strong>{0}</strong> ist noch nicht verfügbar. Es fehlt sowohl in Ihrer "
 "Landessprache ({1}) als auch in Englisch.<br><br>Bitte helfen Sie mit beim "
-"Verbessern des JOSM Hilfesystems und ergänzen Sie fehlende Informationen. "
+"Verbessern des JOSM-Hilfesystems und ergänzen Sie fehlende Informationen. "
 "Sie können sowohl das <a href=\"{2}\">Hilfethema in Ihrer "
-"Landessprache({1})</a> als auch das a href=\"{3}\">Hilfethema in "
+"Landessprache({1})</a> als auch das <a href=\"{3}\">Hilfethema in "
 "Englisch</a> bearbeiten.</p></html>"
 
 msgid ""
@@ -8681,9 +8693,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "nicht vorhanden"
-
 msgid "Changeset comment"
 msgstr "Änderungssatzkommentar"
 
@@ -9747,6 +9756,9 @@ msgstr "Pixel Skalierung: {0}"
 msgid "Best zoom: {0}"
 msgstr "Optimaler Zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Geschätzte Cachegröße: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Zwischenspeicherstatistik: {0}"
 
@@ -9848,6 +9860,17 @@ msgstr "Vorherige Marke"
 msgid "Jump to previous marker"
 msgstr "Auf vorherige Markierung springen"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Um eine weitere Ebene hinzuzufügen benötigt JOSM mindestens {0,number,#}MB "
+"Speicher. Die zugehörige Option ist -Xmx{0,number,#}M (siehe "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Momentan sind JOSM {1,number,#}MB Speicher zugewiesen."
+
 msgid "All projections are supported"
 msgstr "Alle Projektionen werden unterstützt"
 
@@ -12042,9 +12065,6 @@ msgstr "Kachel-Zwischenspeicherverzeichnis: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Maximale Größe des Festplattenzwischenspeichers (pro Bild) in MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maximale Anzahl der Objekte im Zwischenspeicher: "
-
 msgid "Tiles zoom offset:"
 msgstr "Kachelzoomversatz:"
 
@@ -13233,35 +13253,53 @@ msgstr "Merkmale ändern"
 msgid "Add or remove toolbar button"
 msgstr "Schaltfläche in Werkzeugleiste hinzufügen/löschen"
 
-msgid "Unknown requisite: {0}"
-msgstr "Unbekannte Vorraussetzung: {0}"
+msgid "Unknown type: {0}"
+msgstr "Unbekannter Typ: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Ungültiger Elementausdruck: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Vorlagengruppe {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Mehr Informationen zu dieser Vorlage"
+msgid "Preset group {0}"
+msgstr "Vorlagengruppe {0}"
 
-msgid "Available roles"
-msgstr "Verfügbare Rollen"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Referenz {0} wird benutzt, bevor sie definiert wurde"
 
-msgid "role"
-msgstr "Rolle"
+msgid "Roles cannot appear more than once"
+msgstr "Rollen können nicht mehr als einmal vorkommen"
 
-msgid "count"
-msgstr "Anzahl"
+msgid "Preset role element without parent"
+msgstr "Vorlagenelement Rolle ohne Vorgänger"
 
-msgid "elements"
-msgstr "Elemente"
+msgid "Preset sub element without parent"
+msgstr "Vorlagenelement ohne Elternelement"
 
-msgid "Optional Attributes:"
-msgstr "Optionale Attribute:"
+msgid "Error parsing {0}: "
+msgstr "Fehler beim Einlesen von {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Auto-Inkrement von {0} für dieses Feld auswählen"
+msgid "Search preset"
+msgstr "Vorlage suchen"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Auto-Inkrement für dieses Feld aufheben"
+msgid "Show preset search dialog"
+msgstr "Vorlagensuchdialog zeigen"
+
+msgid "Search presets"
+msgstr "Vorlagen suchen"
+
+msgid "Presets"
+msgstr "Vorlagen"
+
+msgid "Search for objects by preset"
+msgstr "Suche nach Objekten mittels Vorlage"
+
+msgid "Show only applicable to selection"
+msgstr "Nur Einträge passend zur Auswahl zeigen"
+
+msgid "Search in tags"
+msgstr "Suche in Merkmalen"
+
+msgid "Add toolbar button"
+msgstr "Schaltfläche in Werkzeugleiste hinzufügen"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13301,53 +13339,35 @@ msgstr ""
 "Defekte Objektvorlage \"{0}-{1}\" - Anzahl der Datenworte in "
 "''short_descriptions'' und in ''values'' müssen gleich sein"
 
-msgid "Unknown type: {0}"
-msgstr "Unbekannter Typ: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Vorlagengruppe {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Vorlagengruppe {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Referenz {0} wird benutzt, bevor sie definiert wurde"
-
-msgid "Roles cannot appear more than once"
-msgstr "Rollen können nicht mehr als einmal vorkommen"
-
-msgid "Preset role element without parent"
-msgstr "Vorlagenelement Rolle ohne Vorgänger"
-
-msgid "Preset sub element without parent"
-msgstr "Vorlagenelement ohne Elternelement"
+msgid "More information about this feature"
+msgstr "Mehr Informationen zu dieser Vorlage"
 
-msgid "Error parsing {0}: "
-msgstr "Fehler beim Einlesen von {0}: "
+msgid "Optional Attributes:"
+msgstr "Optionale Attribute:"
 
-msgid "Search preset"
-msgstr "Vorlage suchen"
+msgid "Unknown requisite: {0}"
+msgstr "Unbekannte Vorraussetzung: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Vorlagensuchdialog zeigen"
+msgid "Illegal member expression: {0}"
+msgstr "Ungültiger Elementausdruck: {0}"
 
-msgid "Search presets"
-msgstr "Vorlagen suchen"
+msgid "Available roles"
+msgstr "Verfügbare Rollen"
 
-msgid "Presets"
-msgstr "Vorlagen"
+msgid "role"
+msgstr "Rolle"
 
-msgid "Search for objects by preset"
-msgstr "Suche nach Objekten mittels Vorlage"
+msgid "count"
+msgstr "Anzahl"
 
-msgid "Show only applicable to selection"
-msgstr "Nur Einträge passend zur Auswahl zeigen"
+msgid "elements"
+msgstr "Elemente"
 
-msgid "Search in tags"
-msgstr "Suche in Merkmalen"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Auto-Inkrement von {0} für dieses Feld auswählen"
 
-msgid "Add toolbar button"
-msgstr "Schaltfläche in Werkzeugleiste hinzufügen"
+msgid "Cancel auto-increment for this field"
+msgstr "Auto-Inkrement für dieses Feld aufheben"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13764,12 +13784,6 @@ msgstr "Benachrichtigung über neue Nachrichten"
 msgid "{0} not available (offline mode)"
 msgstr "{0} nicht verfügbar (Offline-Modus)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Im lokalem Datensatz ist kein Objekt mit der Kennung {0} vorhanden. Der Typ "
-"kann daher nicht bestimmt werden."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Mehrere Punkte von \"{0}\" abrufen"
 
@@ -16269,6 +16283,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16565,6 +16582,9 @@ msgstr "Zabrze: Luftbild 2011"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (Pfade)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (aerial image)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16751,12 +16771,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1. Serie 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -17016,6 +17042,22 @@ msgstr ""
 "gewählten Angelpunkt parallel."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Stellt Apache-Commons-Bibliothekskomponenten bereit. Nicht dazu gedacht, "
+"direkt von Nutzern installiert zu werden, sondern als eine Abhängigkeit für "
+"andere Erweiterungen."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Stellt eine Apache-HTTP-Bibliothek bereit. Nicht dazu gedacht, direkt von "
+"Nutzern installiert zu werden, sondern als eine Abhängigkeit für andere "
+"Erweiterungen."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -17064,17 +17106,12 @@ msgstr ""
 "Implementiert eine Kommandozeile und erlaubt es Kommandos zu erstellen. "
 "Siehe Link für Standardkommandos (Bogen, Kreis, …)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Stellt die Commons-Imaging-Bibliothek zur Verfügung. Nicht bestimmt zur "
-"direkten Installation durch Benutzer, sondern als Abhängigkeit für andere "
-"Erweiterungen."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Warnung: Experimentell!) Werkzeug zum Zusammenführen von Daten."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Erzeugt ein Liniengitter."
 
@@ -17465,6 +17502,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Erstellt Reihenhäuser aus einem Häuserblock."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Integriert to-fix http://osmlab.github.io/to-fix/ zum Reparieren von Fehlern "
+"in OpenStreetMap-Daten in JOSM"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17800,61 +17844,9 @@ msgstr "Betreiber"
 msgid "Service Times"
 msgstr "Dienstzeiten"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Öffnungszeiten"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Rollstuhl"
 
@@ -19086,7 +19078,7 @@ msgid "Pedestrian Crossing"
 msgstr "Fußgängerüberweg"
 
 msgid "In case of traffic signals:"
-msgstr "Bei Lichtsignalen:"
+msgstr "Bei Ampeln:"
 
 msgid "Traffic Calming"
 msgstr "Verkehrsberuhigung"
@@ -20376,6 +20368,33 @@ msgstr "Jugendherberge"
 msgid "Alpine Hut"
 msgstr "Alpenhütte"
 
+msgid "Wilderness Hut"
+msgstr "Biwakschachtel"
+
+msgid "Access rights"
+msgstr "Zugangsarten"
+
+msgid "Shower"
+msgstr "Dusche"
+
+msgid "seasonal"
+msgstr "saisonal"
+
+msgid "Reservation"
+msgstr "Reservierung"
+
+msgid "required"
+msgstr "erforderlich"
+
+msgid "recommended"
+msgstr "empfohlen"
+
+msgid "members_only"
+msgstr "nur Mitglieder"
+
+msgid "Closer Description"
+msgstr "Nähere Beschreibung"
+
 msgid "Caravan Site/RV Park"
 msgstr "Campingplatz/Wohnmobil-Stellplatz"
 
@@ -20487,12 +20506,6 @@ msgstr "Biergarten"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Nachtclub"
-
-msgid "Strip Club"
-msgstr "Stripclub"
-
 msgid "Tourism"
 msgstr "Tourismus"
 
@@ -20545,9 +20558,6 @@ msgstr "Stadt"
 msgid "region"
 msgstr "Region"
 
-msgid "Closer Description"
-msgstr "Nähere Beschreibung"
-
 msgid "Routes shown for:"
 msgstr "Dargestellte Routen für:"
 
@@ -20669,12 +20679,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Pferdereiten"
 
-msgid "Casino"
-msgstr "Spielbank"
-
-msgid "Brothel"
-msgstr "Bordell"
-
 msgid "Playground"
 msgstr "Spielplatz"
 
@@ -20706,6 +20710,18 @@ msgstr "Angeln"
 msgid "Private Swimming Pool"
 msgstr "Privates Schwimmbecken"
 
+msgid "Night Club"
+msgstr "Nachtclub"
+
+msgid "Casino"
+msgstr "Spielbank"
+
+msgid "Strip Club"
+msgstr "Stripclub"
+
+msgid "Brothel"
+msgstr "Bordell"
+
 msgid "Culture"
 msgstr "Kultur"
 
@@ -21013,11 +21029,17 @@ msgstr "Tierarzt"
 msgid "Toilets/Restrooms"
 msgstr "Toiletten"
 
-msgid "Access rights"
-msgstr "Zugangsarten"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Frau"
 
-msgid "seasonal"
-msgstr "saisonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Mann"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisex"
 
 msgid "flush"
 msgstr "Spülung"
@@ -21046,39 +21068,27 @@ msgstr "hocken"
 msgid "urinal"
 msgstr "Pissoir"
 
-msgid "Shower"
-msgstr "Dusche"
-
 msgid "Post Box"
 msgstr "Briefkasten"
 
 msgid "Collection times"
 msgstr "Leerungszeiten"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; So 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "Säule"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "Lampe"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "Mauer"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "meter (USA)"
 
 msgid "Drive through"
 msgstr "Durchfahrt"
@@ -21357,6 +21367,24 @@ msgstr "Saugwirkung"
 msgid "Count"
 msgstr "Anzahl"
 
+msgid "Compressed Air"
+msgstr "Druckluft"
+
+msgid "Valves"
+msgstr "Ventile"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Litfaßsäule"
 
@@ -22044,9 +22072,6 @@ msgstr "Leuchtturm"
 msgid "Street Lamp"
 msgstr "Straßenlampe"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Beobachtungs-/Messstation"
 
@@ -23184,11 +23209,8 @@ msgstr "Zeitungskiosk"
 msgid "Ticket"
 msgstr "Eintrittskarten"
 
-msgid "Department Store"
-msgstr "Warenhaus"
-
-msgid "Mall"
-msgstr "Einkaufszentrum (Mall)"
+msgid "For the body"
+msgstr "Für den Körper"
 
 msgid "Chemist"
 msgstr "Drogerie"
@@ -23214,12 +23236,15 @@ msgstr "Sanitätsartikel"
 msgid "Jewellery"
 msgstr "Schmuck"
 
-msgid "Gift/Souvenir"
-msgstr "Geschenk/Souvenir"
-
 msgid "Erotic"
 msgstr "Erotikhandel"
 
+msgid "Department Store"
+msgstr "Warenhaus"
+
+msgid "Mall"
+msgstr "Einkaufszentrum (Mall)"
+
 msgid "Florist"
 msgstr "Blumenladen"
 
@@ -23244,6 +23269,9 @@ msgstr "Musikhaus"
 msgid "Toys"
 msgstr "Spielzeug"
 
+msgid "Gift/Souvenir"
+msgstr "Geschenk/Souvenir"
+
 msgid "Variety Store"
 msgstr "1-Euro-Laden"
 
@@ -23259,6 +23287,9 @@ msgstr "Taschen"
 msgid "Pet"
 msgstr "Tierhandlung"
 
+msgid "Photo"
+msgstr "Foto"
+
 msgid "Funeral Directors"
 msgstr "Bestattungsunternehmer"
 
@@ -25250,9 +25281,6 @@ msgstr "Adressen ohne (gültige) Straße suchen"
 msgid "Address Edit"
 msgstr "Adressen korrigieren"
 
-msgid "Searching"
-msgstr "Suche …"
-
 msgid "Guess values for "
 msgstr "Werte vorschlagen für "
 
@@ -25555,9 +25583,6 @@ msgstr "Vorheriger OSMI-Fehler"
 msgid "Next OSMI bug"
 msgstr "Nächster OSMI-Fehler"
 
-msgid "Osm Inspector Bugs"
-msgstr "OsmInspector-Fehler"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM-Inspektor-Fehler"
 
@@ -26351,17 +26376,6 @@ msgid "Auto sourcing"
 msgstr "Automatische Quellenangabe"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Das Plugin cadastre-fr nutzte die Taste F11, welche nun vom\n"
-"Vollbildmodus verwendet wird, zum Datenholen.\n"
-"Die neue Taste für das Datenholen ist F10, aber Sie können\n"
-"diese in den Tastaturkürzel-Einstellungen ändern."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -27050,6 +27064,82 @@ msgstr "Leere Auswahl"
 msgid "Invalid reference or subject"
 msgstr "Ungültige Referenz / ungültiges Ziel"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adresse"
 
@@ -28509,13 +28599,13 @@ msgid "Approve upload on the website"
 msgstr "Hochladen auf Webseite bestätigen"
 
 msgid "View in website"
-msgstr "In Internetseite ansehen"
+msgstr "Auf Internetseite ansehen"
 
 msgid "Copy key"
-msgstr "Schlüssel kopieren"
+msgstr "Mapillary-Schlüssel kopieren"
 
 msgid "Copy key tag"
-msgstr "Schlüsselanhänger kopieren"
+msgstr "Mapillary-Tag kopieren"
 
 msgid "Edit on website"
 msgstr "Auf Webseite bearbeiten"
@@ -28580,12 +28670,18 @@ msgstr "Monate"
 msgid "Days"
 msgstr "Tage"
 
+msgid "Imported images"
+msgstr "Importierte Bilder"
+
 msgid "Mapillary filter"
 msgstr "Mapillary-Filter"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Mapillary-Filterdialog öffnen"
 
+msgid "Not older than: "
+msgstr "Nicht älter als: "
+
 msgid "Downloaded images"
 msgstr "Heruntergeladene Bilder"
 
@@ -28601,6 +28697,9 @@ msgstr "Mapillary-Chronik"
 msgid "Open Mapillary history dialog"
 msgstr "Mapillary-Chronikdialog öffnen"
 
+msgid "Mapillary picture"
+msgstr "Mapillary-Bild"
+
 msgid "Open Mapillary window"
 msgstr "Mapillary Fenster öffnen"
 
@@ -31213,6 +31312,66 @@ msgstr ""
 msgid "Terrace"
 msgstr "Abteilen"
 
+msgid "To-fix"
+msgstr "To-fix"
+
+msgid "Open to-fix window."
+msgstr "To-fix-Fenster öffnen."
+
+msgid "Tool:To-fix"
+msgstr "Werkzeug:To-fix"
+
+msgid "Skip"
+msgstr "Überspringen"
+
+msgid "Skip Error"
+msgstr "Fehler überspringen"
+
+msgid "Fixed"
+msgstr "Behoben"
+
+msgid "Fixed Error"
+msgstr "Behobener Fehler"
+
+msgid "Not an error"
+msgstr "Kein Fehler"
+
+msgid "Set download area (m²)"
+msgstr "Herunterladebereich festlegen (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "tofix:Element überspringen"
+
+msgid "tofix:Fixed item"
+msgstr "tofix:Behobenes Element"
+
+msgid "tofix:Not a Error item"
+msgstr "tofix:Kein Fehler-Element"
+
+msgid "Maintenance server"
+msgstr "Wartungsserver"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Etwas ging schief, bitte aktualisieren Sie das Plugin oder berichten "
+"Sie das Problem auf <a href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Etwas ging schief, versuchen Sie es noch einmal"
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+"Ein Punkt kann nicht außerhalb des heruntergeladenen Bereichs platziert "
+"werden."
+
+msgid "Layer to draw OSM error"
+msgstr "Ebene zum Zeichnen des OSM-Fehlers"
+
 msgid "Browse"
 msgstr "Bewegen"
 
diff --git a/i18n/po/de_DE.po b/i18n/po/de_DE.po
index 54c3479..e58e98d 100644
--- a/i18n/po/de_DE.po
+++ b/i18n/po/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-07-10 12:32+0000\n"
 "Last-Translator: ralekuja <Unknown>\n"
 "Language-Team: German (Germany) <de_DE at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:09+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:05+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1372,6 +1372,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2090,17 +2099,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2512,6 +2515,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2533,6 +2542,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4368,9 +4385,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7860,9 +7874,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8759,6 +8770,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8858,6 +8872,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10788,9 +10809,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11859,34 +11877,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11917,52 +11953,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12309,10 +12327,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14462,6 +14476,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14754,6 +14771,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14940,12 +14960,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15200,6 +15226,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15233,12 +15269,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15545,6 +15579,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15860,59 +15899,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18399,6 +18388,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18510,12 +18526,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18567,9 +18577,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18691,12 +18698,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18728,6 +18729,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19035,10 +19048,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19068,24 +19087,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19379,6 +19386,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20066,9 +20091,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21204,10 +21226,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21234,10 +21253,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21264,6 +21286,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21279,6 +21304,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23195,9 +23223,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23491,9 +23516,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24150,13 +24172,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24784,6 +24799,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26217,12 +26308,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26238,6 +26335,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28697,6 +28797,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/el.po b/i18n/po/el.po
index b613e72..f10fad1 100644
--- a/i18n/po/el.po
+++ b/i18n/po/el.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-08-20 19:34+0000\n"
-"Last-Translator: Don-vip <Unknown>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-14 13:30+0000\n"
+"Last-Translator: aitolos <Unknown>\n"
 "Language-Team: Greek <el at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:44+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:43+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: el\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -87,7 +87,7 @@ msgid "Initializing validator"
 msgstr "Αρχικοποίηση  Επικυρωτή"
 
 msgid "Initializing presets"
-msgstr "Αρχικοποίηση προκαθορισμένων"
+msgstr "Αρχικοποίηση προεπιλογών"
 
 msgid "Initializing map styles"
 msgstr "Αρχικοποίηση στυλ χάρτη"
@@ -807,7 +807,7 @@ msgid "Download Rectified Images From Various Services"
 msgstr ""
 
 msgid "Imagery: {0}"
-msgstr ""
+msgstr "Υπόβαθρο εικόνων: {0}"
 
 msgid "Custom WMS Link"
 msgstr "Προσαρμοσμένος σύνδεσμος WMS"
@@ -1470,6 +1470,15 @@ msgstr[1] ""
 "Υπάρχουν περισσότερους από έναν δρόμο που χρησιμοποιεί τους κόμβους που "
 "επιλέξατε. Παρακαλώ επιλέξτε και τον δρόμο."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Πρέπει να επιλέξετε δυο ή περισότερους κόμβους για να διαιρέσετε μια κυκλική "
@@ -2231,18 +2240,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr "Δεν μπορεί να τοποθετηθεί κόμβος εκτός κόσμου."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-"Δεν μπορεί να διαγραφεί κόμβος ο οποίος αναφέρεται από πολλαπλά αντικείμενα"
-
 msgid "Cannot delete node that has tags"
 msgstr "Δεν μπορεί να διαγραφεί κόμβος ο οποίος έχει ετικέτες"
 
@@ -2664,6 +2666,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2685,6 +2693,14 @@ msgstr "αντικείμενα στη ληφθείσα περιοχή"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Δεν βρέθηκε αποτέλεσμα για ''{0}''"
 
@@ -4328,7 +4344,7 @@ msgid "Check property values."
 msgstr "Έλεγχος τιμών ιδιοτήτων."
 
 msgid "Validate that property values are valid checking against presets."
-msgstr "Βεβαίωση ότι οι τιμές ιδιοτήτων είναι έγκυρες βάσει προκαθορισμένων."
+msgstr "Βεβαίωση ότι οι τιμές ιδιοτήτων είναι έγκυρες βάσει προεπιλογών."
 
 msgid "Check for FIXMES."
 msgstr "Έλεγχος για FIXMES."
@@ -4569,9 +4585,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Να μην εμφανιστεί ξανά (απομνημόνευση επιλογής)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "μη ολοκληρωμένη"
 
@@ -4691,7 +4704,7 @@ msgstr "Μετατόπιση υπόβαθρου εικόνων"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "Υπόβαθρο εικόνων"
 
 msgctxt "layer"
 msgid "Offset"
@@ -4919,31 +4932,31 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Edit"
-msgstr ""
+msgstr "Επεξεργασία"
 
 msgctxt "menu"
 msgid "View"
-msgstr ""
+msgstr "Προβολή"
 
 msgctxt "menu"
 msgid "Tools"
-msgstr ""
+msgstr "Εργαλεία"
 
 msgctxt "menu"
 msgid "More tools"
-msgstr ""
+msgstr "Περισσότερα εργαλεία"
 
 msgctxt "menu"
 msgid "Data"
-msgstr ""
+msgstr "Δεδομένα"
 
 msgctxt "menu"
 msgid "Selection"
-msgstr ""
+msgstr "Επιλογή"
 
 msgctxt "menu"
 msgid "Presets"
-msgstr ""
+msgstr "Προεπιλογές"
 
 msgid "More..."
 msgstr ""
@@ -4954,11 +4967,11 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Windows"
-msgstr ""
+msgstr "Παράθυρα"
 
 msgctxt "menu"
 msgid "Help"
-msgstr ""
+msgstr "Βοήθεια"
 
 msgid "Menu: {0}"
 msgstr "Μενού: {0}"
@@ -4970,13 +4983,13 @@ msgid "Toggles the visibility of the edit toolbar (i.e., the vertical tool)"
 msgstr ""
 
 msgid "Preset preferences"
-msgstr ""
+msgstr "Προτιμήσεις προεπιλογών"
 
 msgid "Click to open the tagging presets tab in the preferences"
 msgstr ""
 
 msgid "Imagery preferences"
-msgstr ""
+msgstr "Προτιμήσεις  υπόβαθρο εικόνων"
 
 msgid "Click to open the imagery tab in the preferences"
 msgstr ""
@@ -4986,7 +4999,7 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "Ήχος"
 
 msgid "Do not hide toolbar"
 msgstr ""
@@ -7276,7 +7289,7 @@ msgstr ""
 "Επεξεργασία της τιμής του επιλεγμένου κλειδιού για όλα τα αντικείμενα"
 
 msgid "Edit Tags"
-msgstr ""
+msgstr "Επεξεργασία Ετικετών"
 
 msgid "Go to OSM wiki for tag help (F1)"
 msgstr ""
@@ -8135,9 +8148,6 @@ msgstr "Σχέση {0}"
 msgid "Object"
 msgstr "Αντικείμενο"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -9084,6 +9094,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9183,6 +9196,13 @@ msgstr "Προηγούμενος δείκτης"
 msgid "Jump to previous marker"
 msgstr "Μεταπήδηση στον προηγούμενο δείκτη"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -11132,9 +11152,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12225,34 +12242,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Άγνωστος τύπος: {0}"
+
+msgid "Preset group {1} / {0}"
+msgstr "Προεπιλογές ομάδας {1} / {0}"
+
+msgid "Preset group {0}"
+msgstr "Προεπιλογές ομάδας {0}"
+
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Περισότερες πληροφορίες για αυτό το χαρακτηριστικό"
+msgid "Preset role element without parent"
+msgstr ""
 
-msgid "Available roles"
-msgstr "Διαθέσιμοι ρόλοι"
+msgid "Preset sub element without parent"
+msgstr ""
 
-msgid "role"
-msgstr "ρόλος"
+msgid "Error parsing {0}: "
+msgstr "Σφάλμα ανάλυσης {0}: "
 
-msgid "count"
+msgid "Search preset"
 msgstr ""
 
-msgid "elements"
-msgstr "στοιχεία"
+msgid "Show preset search dialog"
+msgstr "Εμφάνιση διαλόγου αναζήτησης προεπιλογών"
 
-msgid "Optional Attributes:"
-msgstr "Προαιρετικά Χαρακτηριστικά:"
+msgid "Search presets"
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Presets"
+msgstr "Προεπιλογές"
+
+msgid "Search for objects by preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12283,52 +12318,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Άγνωστος τύπος: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Προεπιλογές ομάδας {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Προεπιλογές ομάδας {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Περισότερες πληροφορίες για αυτό το χαρακτηριστικό"
 
-msgid "Preset role element without parent"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Προαιρετικά Χαρακτηριστικά:"
 
-msgid "Preset sub element without parent"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Σφάλμα ανάλυσης {0}: "
-
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
-msgstr "Εμφάνιση διαλόγου αναζήτησης προεπιλογών"
-
-msgid "Search presets"
-msgstr ""
+msgid "Available roles"
+msgstr "Διαθέσιμοι ρόλοι"
 
-msgid "Presets"
-msgstr "Προεπιλογές"
+msgid "role"
+msgstr "ρόλος"
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
-msgstr ""
+msgid "elements"
+msgstr "στοιχεία"
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12679,10 +12696,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14860,6 +14873,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15152,6 +15168,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15338,12 +15357,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15598,6 +15623,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15631,12 +15666,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15943,6 +15976,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16261,59 +16299,9 @@ msgstr "Λειτουργός"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "δύση,ανατολή"
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Ώρες Λειτουργείας"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Αναπηρικά αμαξίδια"
 
@@ -18800,6 +18788,33 @@ msgstr "Ξενώνας"
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18911,12 +18926,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Μπαρ"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Τουρισμός"
 
@@ -18968,9 +18977,6 @@ msgstr "πόλη"
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -19092,12 +19098,6 @@ msgstr "Σάουνα"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Παιδική Χαρά"
 
@@ -19129,6 +19129,18 @@ msgstr "Ψάρεμα"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr "Πολιτισμός"
 
@@ -19436,10 +19448,16 @@ msgstr "Κτηνιατρίο"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19469,24 +19487,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Γραμματοκιβώτιο"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19780,6 +19786,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20467,9 +20491,6 @@ msgstr "Φάρος"
 msgid "Street Lamp"
 msgstr "Φωτισμός δρόμου"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Δε-Πα 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Σταθμός παρακολούθησης"
 
@@ -21605,11 +21626,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Πολυκατάστημα"
-
-msgid "Mall"
-msgstr "Εμπορικό Κέντρο"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Χημείο"
@@ -21635,12 +21653,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr ""
 
+msgid "Department Store"
+msgstr "Πολυκατάστημα"
+
+msgid "Mall"
+msgstr "Εμπορικό Κέντρο"
+
 msgid "Florist"
 msgstr "Ανθοπωλείο"
 
@@ -21665,6 +21686,9 @@ msgstr "Μουσικά Όργανα"
 msgid "Toys"
 msgstr "Παιχνίδια"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr "Ψιλικατζίδικο"
 
@@ -21680,6 +21704,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23596,9 +23623,6 @@ msgstr "Αναζήτηση και διόρθωση διευθύνσεων χωρ
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23894,9 +23918,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24291,7 +24312,7 @@ msgid "Tag Building"
 msgstr ""
 
 msgid "Tools: {0}"
-msgstr ""
+msgstr "Εργαλεία: {0}"
 
 msgid "Area Selection"
 msgstr ""
@@ -24553,13 +24574,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25190,6 +25204,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26643,12 +26733,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26664,6 +26760,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29128,6 +29227,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Δεν μπορεί να τοποθετηθεί κόμβος εκτός κόσμου."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/en_AU.po b/i18n/po/en_AU.po
index d1ac6b8..76d7c8e 100644
--- a/i18n/po/en_AU.po
+++ b/i18n/po/en_AU.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-06-08 12:52+0000\n"
 "Last-Translator: Mark Pulley <mrpulley at lizzy.com.au>\n"
 "Language-Team: English (Australia) <en_AU at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:07+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:03+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1458,6 +1458,15 @@ msgstr[1] ""
 "There is more than one way using the nodes you selected. Please select the "
 "way also."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "You must select two or more nodes to split a circular way."
 
@@ -2229,17 +2238,11 @@ msgstr ""
 "Click to move the highlighted node. Hold Ctrl to add new nodes, or Alt to "
 "delete."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Cannot place a node outside of the world."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Add a new node to way"
 msgstr[1] "Add a new node to {0} ways"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Cannot delete node that is referenced by multiple objects"
-
 msgid "Cannot delete node that has tags"
 msgstr "Cannot delete node that has tags"
 
@@ -2681,6 +2684,12 @@ msgstr "all children of objects matching the expression"
 msgid "all parents of objects matching the expression"
 msgstr "all parents of objects matching the expression"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-th member of relation and/or n-th node of way"
 
@@ -2703,6 +2712,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objects (and all its way nodes / relation members) in downloaded area"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "No match found for ''{0}''"
 
@@ -4647,9 +4664,6 @@ msgstr "Do not show again (this session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Do not show again (remembers choice)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incomplete"
 
@@ -8381,9 +8395,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Object"
 
-msgid "not present"
-msgstr "not present"
-
 msgid "Changeset comment"
 msgstr "Changeset comment"
 
@@ -9399,6 +9410,9 @@ msgstr "Pixel scale: {0}"
 msgid "Best zoom: {0}"
 msgstr "Best zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Cache stats: {0}"
 
@@ -9499,6 +9513,13 @@ msgstr "Previous marker"
 msgid "Jump to previous marker"
 msgstr "Jump to previous marker"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "All projections are supported"
 
@@ -11594,9 +11615,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12700,34 +12718,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Unknown type: {0}"
+
+msgid "Preset group {1} / {0}"
+msgstr "Preset group {1} / {0}"
+
+msgid "Preset group {0}"
+msgstr "Preset group {0}"
+
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "More information about this feature"
+msgid "Preset role element without parent"
+msgstr ""
 
-msgid "Available roles"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "role"
+msgid "Error parsing {0}: "
+msgstr "Error parsing {0}: "
+
+msgid "Search preset"
 msgstr ""
 
-msgid "count"
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "elements"
+msgid "Search presets"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Optional Attributes:"
+msgid "Presets"
+msgstr "Presets"
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search for objects by preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12758,52 +12794,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Unknown type: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Preset group {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Preset group {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "More information about this feature"
+msgstr "More information about this feature"
 
-msgid "Preset role element without parent"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Optional Attributes:"
 
-msgid "Preset sub element without parent"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Error parsing {0}: "
-
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Presets"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -13176,11 +13194,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Fetching a package of nodes from ''{0}''"
 
@@ -15438,6 +15451,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15730,6 +15746,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15916,12 +15935,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16178,6 +16203,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16211,12 +16246,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16548,6 +16581,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Make terraced houses out of single blocks."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16869,59 +16907,9 @@ msgstr "Operator"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Opening Hours"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Wheelchairs"
 
@@ -19408,6 +19396,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Alpine Hut"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Closer Description"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19519,12 +19534,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Tourism"
 
@@ -19576,9 +19585,6 @@ msgstr "city"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Closer Description"
-
 msgid "Routes shown for:"
 msgstr "Routes shown for:"
 
@@ -19700,12 +19706,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Playground"
 
@@ -19737,6 +19737,18 @@ msgstr "Fishing"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -20044,10 +20056,16 @@ msgstr "Veterinary"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -20077,24 +20095,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Post Box"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20388,6 +20394,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -21075,9 +21099,6 @@ msgstr "Lighthouse"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22213,10 +22234,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -22243,10 +22261,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -22273,6 +22294,9 @@ msgstr ""
 msgid "Toys"
 msgstr "Toys"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -22288,6 +22312,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -24208,9 +24235,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24504,9 +24528,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -25171,13 +25192,6 @@ msgid "Auto sourcing"
 msgstr "Auto sourcing"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25838,6 +25852,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -27286,12 +27376,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27307,6 +27403,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29778,6 +29877,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrace"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Cannot place a node outside of the world."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/en_CA.po b/i18n/po/en_CA.po
index 56072c7..b343ec6 100644
--- a/i18n/po/en_CA.po
+++ b/i18n/po/en_CA.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2010-09-24 17:25+0000\n"
 "Last-Translator: Johann Beda <Unknown>\n"
 "Language-Team: English (Canada) <en_CA at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:09+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:05+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1369,6 +1369,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2087,17 +2096,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2509,6 +2512,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2530,6 +2539,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4365,9 +4382,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7857,9 +7871,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8756,6 +8767,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8855,6 +8869,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10785,9 +10806,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11856,34 +11874,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11914,52 +11950,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12306,10 +12324,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14456,6 +14470,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14748,6 +14765,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14934,12 +14954,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15194,6 +15220,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15227,12 +15263,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15539,6 +15573,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15854,59 +15893,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18393,6 +18382,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18504,12 +18520,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18561,9 +18571,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18685,12 +18692,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18722,6 +18723,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19029,10 +19042,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19062,24 +19081,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19373,6 +19380,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20060,9 +20085,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21198,10 +21220,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21228,10 +21247,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21258,6 +21280,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21273,6 +21298,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23189,9 +23217,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23485,9 +23510,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24142,13 +24164,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24774,6 +24789,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26207,12 +26298,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26228,6 +26325,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28687,6 +28787,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/en_GB.po b/i18n/po/en_GB.po
index 6451f38..697475b 100644
--- a/i18n/po/en_GB.po
+++ b/i18n/po/en_GB.po
@@ -10,16 +10,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: JOSM\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-09-03 22:09+0000\n"
-"Last-Translator: Ben Harris <bjh21 at bjh21.me.uk>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 11:01+0000\n"
+"Last-Translator: Dee-earlsoft <Unknown>\n"
 "Language-Team: German <josm-dev at openstreetmap.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:07+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:03+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: de\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1461,6 +1461,15 @@ msgstr[1] ""
 "There is more than one way using the nodes you selected. Please select the "
 "way also."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Which way segment should reuse the history of {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segment {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "You must select two or more nodes to split a circular way."
 
@@ -2232,17 +2241,11 @@ msgstr ""
 "Click to move the highlighted node. Hold Ctrl to add new nodes, or Alt to "
 "delete."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Cannot place a node outside of the world."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Add a new node to way"
 msgstr[1] "Add a new node to {0} ways"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Cannot delete a node that is referenced by multiple objects"
-
 msgid "Cannot delete node that has tags"
 msgstr "Cannot delete a node that has tags"
 
@@ -2503,13 +2506,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Also include incomplete and deleted objects in search."
 
 msgid "standard"
-msgstr ""
+msgstr "standard"
 
 msgid "regular expression"
 msgstr "regular expression"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS selector"
 
 msgid "add toolbar button"
 msgstr "add toolbar button"
@@ -2684,6 +2687,12 @@ msgstr "all children of objects matching the expression"
 msgid "all parents of objects matching the expression"
 msgstr "all parents of objects matching the expression"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relation containing a member of role <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objects being part of a relation as role <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-th member of relation and/or n-th node of way"
 
@@ -2706,6 +2715,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objects (and all its way nodes / relation members) in downloaded area"
 
+msgid "Searching"
+msgstr "Searching"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Searching in {0} object"
+msgstr[1] "Searching in {0} objects"
+
 msgid "No match found for ''{0}''"
 msgstr "No match found for ''{0}''"
 
@@ -2735,7 +2752,7 @@ msgstr "RX"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -2788,7 +2805,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Unexpected token. Expected {0}, found {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Failed to parse MapCSS selector"
 
 msgid "Unexpected token: {0}"
 msgstr "Unexpected token: {0}"
@@ -3451,13 +3468,13 @@ msgid "Select WMTS layer"
 msgstr "Select WMTS layer"
 
 msgid "Layer name"
-msgstr ""
+msgstr "Layer name"
 
 msgid "Projection"
 msgstr "Projection"
 
 msgid "Matrix set identifier"
-msgstr ""
+msgstr "Matrix set identifier"
 
 msgid "No layers defined by getCapabilities document: {0}"
 msgstr "No layers defined by getCapabilities document: {0}"
@@ -4372,10 +4389,10 @@ msgid "Property values contain HTML entity"
 msgstr "Property values contain HTML entity"
 
 msgid "Key ''{0}'' looks like ''{1}''."
-msgstr ""
+msgstr "Key ''{0}'' looks like ''{1}''."
 
 msgid "Misspelled property key"
-msgstr ""
+msgstr "Misspelled property key"
 
 msgid "Key ''{0}'' not in presets."
 msgstr "Key ''{0}'' not in presets."
@@ -4654,9 +4671,6 @@ msgstr "Do not show again (this session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Do not show again (remembers choice)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incomplete"
 
@@ -4776,7 +4790,7 @@ msgstr "Imagery offset"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "Imagery"
 
 msgctxt "layer"
 msgid "Offset"
@@ -5016,50 +5030,50 @@ msgstr ""
 
 msgctxt "menu"
 msgid "File"
-msgstr ""
+msgstr "File"
 
 msgctxt "menu"
 msgid "Edit"
-msgstr ""
+msgstr "Edit"
 
 msgctxt "menu"
 msgid "View"
-msgstr ""
+msgstr "View"
 
 msgctxt "menu"
 msgid "Tools"
-msgstr ""
+msgstr "Tools"
 
 msgctxt "menu"
 msgid "More tools"
-msgstr ""
+msgstr "More tools"
 
 msgctxt "menu"
 msgid "Data"
-msgstr ""
+msgstr "Data"
 
 msgctxt "menu"
 msgid "Selection"
-msgstr ""
+msgstr "Selection"
 
 msgctxt "menu"
 msgid "Presets"
-msgstr ""
+msgstr "Presets"
 
 msgid "More..."
 msgstr "More..."
 
 msgctxt "menu"
 msgid "GPS"
-msgstr ""
+msgstr "GPS"
 
 msgctxt "menu"
 msgid "Windows"
-msgstr ""
+msgstr "Windows"
 
 msgctxt "menu"
 msgid "Help"
-msgstr ""
+msgstr "Help"
 
 msgid "Menu: {0}"
 msgstr "Menu: {0}"
@@ -5087,7 +5101,7 @@ msgstr "Search menu items"
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "Audio"
 
 msgid "Do not hide toolbar"
 msgstr "Do not hide toolbar"
@@ -6514,10 +6528,10 @@ msgid "Adjust opacity of the layer."
 msgstr "Adjust opacity of the layer."
 
 msgid "Gamma"
-msgstr ""
+msgstr "Gamma"
 
 msgid "Adjust gamma value of the layer."
-msgstr ""
+msgstr "Adjust gamma value of the layer."
 
 msgid "Activate"
 msgstr "Activate"
@@ -6649,10 +6663,10 @@ msgid "Customize the style"
 msgstr "Customise the style"
 
 msgid "Mini map"
-msgstr ""
+msgstr "Mini map"
 
 msgid "Displays a small map of the current edit location"
-msgstr ""
+msgstr "Displays a small map of the current edit location"
 
 msgid "List of notes"
 msgstr "List of notes"
@@ -6848,7 +6862,7 @@ msgid "Validation results"
 msgstr "Validation results"
 
 msgid "Lookup"
-msgstr ""
+msgstr "Lookup"
 
 msgid "Looks up the selected primitives in the error list."
 msgstr "Looks up the selected primitives in the error list."
@@ -8402,9 +8416,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Object"
 
-msgid "not present"
-msgstr "not present"
-
 msgid "Changeset comment"
 msgstr "Changeset comment"
 
@@ -9420,6 +9431,9 @@ msgstr "Pixel scale: {0}"
 msgid "Best zoom: {0}"
 msgstr "Best zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Estimated cache size: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Cache stats: {0}"
 
@@ -9520,6 +9534,17 @@ msgstr "Previous marker"
 msgid "Jump to previous marker"
 msgstr "Jump to previous marker"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+
 msgid "All projections are supported"
 msgstr "All projections are supported"
 
@@ -11612,13 +11637,13 @@ msgid "2. Enter name for this layer"
 msgstr "2. Enter name for this layer"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "{0} cache, total cache size: {1} bytes"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Cache name"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Object Count"
 
 msgid "imagery fade"
 msgstr "imagery fade"
@@ -11644,11 +11669,8 @@ msgstr "Tile cache directory: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Maximum size of disk cache (per imagery) in MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maximum number of objects in memory cache: "
-
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Tiles zoom offset:"
 
 msgid "Imagery Preferences"
 msgstr "Imagery preferences"
@@ -12765,10 +12787,12 @@ msgstr "New relation"
 msgid ""
 "The preset <i>{0}</i> cannot be applied since nothing has been selected!"
 msgstr ""
+"The preset <i>{0}</i> cannot be applied since nothing has been selected!"
 
 msgid ""
 "The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 msgstr ""
+"The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 
 msgid "Change {0} object"
 msgid_plural "Change {0} objects"
@@ -12787,35 +12811,53 @@ msgstr "Change tags"
 msgid "Add or remove toolbar button"
 msgstr "Add or remove toolbar button"
 
-msgid "Unknown requisite: {0}"
-msgstr "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Unknown type: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Preset group {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "More information about this feature"
+msgid "Preset group {0}"
+msgstr "Preset group {0}"
 
-msgid "Available roles"
-msgstr "Available roles"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Reference {0} is being used before it was defined"
 
-msgid "role"
-msgstr "role"
+msgid "Roles cannot appear more than once"
+msgstr "Roles cannot appear more than once"
 
-msgid "count"
-msgstr "count"
+msgid "Preset role element without parent"
+msgstr "Preset role element without parent"
 
-msgid "elements"
-msgstr "elements"
+msgid "Preset sub element without parent"
+msgstr "Preset sub element without parent"
 
-msgid "Optional Attributes:"
-msgstr "Optional Attributes:"
+msgid "Error parsing {0}: "
+msgstr "Error parsing {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Select auto-increment of {0} for this field"
+msgid "Search preset"
+msgstr "Search preset"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr "Show preset search dialogue"
+
+msgid "Search presets"
+msgstr "Search presets"
+
+msgid "Presets"
+msgstr "Presets"
+
+msgid "Search for objects by preset"
+msgstr "Search for objects by preset"
+
+msgid "Show only applicable to selection"
+msgstr "Show only applicable to selection"
+
+msgid "Search in tags"
+msgstr "Search in tags"
+
+msgid "Add toolbar button"
+msgstr "Add toolbar button"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12855,53 +12897,35 @@ msgstr ""
 "Broken tagging preset \"{0}-{1}\" - number of items in "
 "''short_descriptions'' must be the same as in ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Unknown type: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Preset group {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Preset group {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Reference {0} is being used before it was defined"
-
-msgid "Roles cannot appear more than once"
-msgstr "Roles cannot appear more than once"
-
-msgid "Preset role element without parent"
-msgstr "Preset role element without parent"
-
-msgid "Preset sub element without parent"
-msgstr "Preset sub element without parent"
+msgid "More information about this feature"
+msgstr "More information about this feature"
 
-msgid "Error parsing {0}: "
-msgstr "Error parsing {0}: "
+msgid "Optional Attributes:"
+msgstr "Optional Attributes:"
 
-msgid "Search preset"
-msgstr "Search preset"
+msgid "Unknown requisite: {0}"
+msgstr "Unknown requisite: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Show preset search dialogue"
+msgid "Illegal member expression: {0}"
+msgstr "Illegal member expression: {0}"
 
-msgid "Search presets"
-msgstr "Search presets"
+msgid "Available roles"
+msgstr "Available roles"
 
-msgid "Presets"
-msgstr "Presets"
+msgid "role"
+msgstr "role"
 
-msgid "Search for objects by preset"
-msgstr "Search for objects by preset"
+msgid "count"
+msgstr "count"
 
-msgid "Show only applicable to selection"
-msgstr "Show only applicable to selection"
+msgid "elements"
+msgstr "elements"
 
-msgid "Search in tags"
-msgstr "Search in tags"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Select auto-increment of {0} for this field"
 
-msgid "Add toolbar button"
-msgstr "Add toolbar button"
+msgid "Cancel auto-increment for this field"
+msgstr "Cancel auto-increment for this field"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13182,7 +13206,7 @@ msgid "GeoJSON Files"
 msgstr "GeoJSON Files"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Projected GeoJSON Files"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Layer ''{0}'' not supported"
@@ -13292,11 +13316,6 @@ msgstr "Message notifier"
 msgid "{0} not available (offline mode)"
 msgstr "{0} not available (offline mode)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Fetching a package of nodes from ''{0}''"
 
@@ -15555,7 +15574,7 @@ msgid "VoGIS: Echtfarbenbild 2012 (12cm)"
 msgstr "VoGIS: Echtfarbenbild 2012 (12cm)"
 
 msgid "VoGIS: Echtfarbenbild Winter 2015 (20cm)"
-msgstr ""
+msgstr "VoGIS: Echtfarbenbild Winter 2015 (20cm)"
 
 msgid "VoGIS: Flächenwidmungsplan"
 msgstr "VoGIS: Flächenwidmungsplan"
@@ -15581,7 +15600,7 @@ msgid "SPW(allonie) 2009 aerial imagery"
 msgstr "SPW(allonie) 2009 aerial imagery"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
-msgstr ""
+msgstr "cadastre: for names and house numbers only, bad geometry"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Mapa de Setores Urbanos"
@@ -15623,13 +15642,13 @@ msgid "Geodatastyrelsen (Denmark)"
 msgstr "Geodatastyrelsen (Denmark)"
 
 msgid "Geodatastyrelsen DTK Kort25"
-msgstr ""
+msgstr "Geodatastyrelsen DTK Kort25"
 
 msgid "Geodatastyrelsen Skyggekort 1.6m"
-msgstr ""
+msgstr "Geodatastyrelsen Skyggekort 1.6m"
 
 msgid "Geodatastyrelsen Skærmkort"
-msgstr ""
+msgstr "Geodatastyrelsen Skærmkort"
 
 msgid "Stevns (Denmark)"
 msgstr "Stevns (Denmark)"
@@ -15656,7 +15675,7 @@ msgid "BANO"
 msgstr "BANO"
 
 msgid "BD Carthage"
-msgstr ""
+msgstr "BD Carthage"
 
 msgid "Bordeaux - 2012"
 msgstr "Bordeaux - 2012"
@@ -15683,7 +15702,7 @@ msgid "Géolittoral - Orthophotos 2000"
 msgstr "Géolittoral - Orthophotos 2000"
 
 msgid "Géolittoral V2 - Orthophotos 2011-2014"
-msgstr ""
+msgstr "Géolittoral V2 - Orthophotos 2011-2014"
 
 msgid "Géolittoral - Sentiers"
 msgstr "Géolittoral - Sentiers"
@@ -15698,7 +15717,7 @@ msgid "SIG L-R - Languedoc-Roussillon 2012 - 20 cm"
 msgstr "SIG L-R - Languedoc-Roussillon 2012 - 20 cm"
 
 msgid "Route 500™©®"
-msgstr ""
+msgstr "Route 500™©®"
 
 msgid "Toulouse - Orthophotoplan 2013"
 msgstr "Toulouse - Orthophotoplan 2013"
@@ -15712,6 +15731,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15735,7 +15757,7 @@ msgid "Hamburg (DK5)"
 msgstr "Hamburg (DK5)"
 
 msgid "Bavaria (80 cm)"
-msgstr ""
+msgstr "Bavaria (80 cm)"
 
 msgid "Bavaria (2 m)"
 msgstr "Bavaria (2 m)"
@@ -15892,13 +15914,13 @@ msgid "Geoportal 2: Ortofotomapa (aerial image)"
 msgstr "Geoportal 2: Ortofotomapa (aerial image)"
 
 msgid "Geoportal 2: Ortofotomapa (aerial image) WMTS"
-msgstr ""
+msgstr "Geoportal 2: Ortofotomapa (aerial image) WMTS"
 
 msgid "Geoportal 2: PRNG (geo names)"
 msgstr "Geoportal 2: PRNG (geo names)"
 
 msgid "Geoportal 2: ISOK hillshade"
-msgstr ""
+msgstr "Geoportal 2: ISOK hillshade"
 
 msgid "Będzin: Ortofotomapa 2013 (aerial image)"
 msgstr "Będzin: Ortofotomapa 2013 (aerial image)"
@@ -16008,6 +16030,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (aerial image)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16194,12 +16219,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16458,6 +16489,20 @@ msgstr ""
 "around a chosen pivot."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16504,16 +16549,12 @@ msgstr ""
 "Implements a command line and enables to create your commands. See link for "
 "standard commands (arc, circle etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Warning: Experimental!) Tool for conflating (merging) data."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Create a grid of ways."
 
@@ -16888,6 +16929,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Make terraced houses out of single blocks."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17219,61 +17267,9 @@ msgstr "Operator"
 msgid "Service Times"
 msgstr "Service times"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Opening hours"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Wheelchairs"
 
@@ -19789,6 +19785,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Alpine Hut"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Access rights"
+
+msgid "Shower"
+msgstr "Shower"
+
+msgid "seasonal"
+msgstr "seasonal"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Closer Description"
+
 msgid "Caravan Site/RV Park"
 msgstr "Caravan site/RV park"
 
@@ -19900,12 +19923,6 @@ msgstr "Beer garden"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Night club"
-
-msgid "Strip Club"
-msgstr "Strip club"
-
 msgid "Tourism"
 msgstr "Tourism"
 
@@ -19957,9 +19974,6 @@ msgstr "city"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Closer Description"
-
 msgid "Routes shown for:"
 msgstr "Routes shown for:"
 
@@ -20082,12 +20096,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Horse riding"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Brothel"
-
 msgid "Playground"
 msgstr "Playground"
 
@@ -20119,6 +20127,18 @@ msgstr "Fishing"
 msgid "Private Swimming Pool"
 msgstr "Private swimming pool"
 
+msgid "Night Club"
+msgstr "Night club"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Strip club"
+
+msgid "Brothel"
+msgstr "Brothel"
+
 msgid "Culture"
 msgstr "Culture"
 
@@ -20426,11 +20446,17 @@ msgstr "Veterinary"
 msgid "Toilets/Restrooms"
 msgstr "Toilets/Restrooms"
 
-msgid "Access rights"
-msgstr "Access rights"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "flush"
@@ -20459,24 +20485,12 @@ msgstr "squat"
 msgid "urinal"
 msgstr "urinal"
 
-msgid "Shower"
-msgstr "Shower"
-
 msgid "Post Box"
 msgstr "Post Box"
 
 msgid "Collection times"
 msgstr "Collection times"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20770,6 +20784,24 @@ msgstr "suction"
 msgid "Count"
 msgstr "Count"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Advertising Column"
 
@@ -21457,9 +21489,6 @@ msgstr "Lighthouse"
 msgid "Street Lamp"
 msgstr "Street Lamp"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Monitoring Station"
 
@@ -22597,11 +22626,8 @@ msgstr "Newspaper Stand"
 msgid "Ticket"
 msgstr "Ticket"
 
-msgid "Department Store"
-msgstr "Department Store"
-
-msgid "Mall"
-msgstr "Mall"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Chemist"
@@ -22627,12 +22653,15 @@ msgstr "Medical Supply"
 msgid "Jewellery"
 msgstr "Jewellery"
 
-msgid "Gift/Souvenir"
-msgstr "Gift/Souvenir"
-
 msgid "Erotic"
 msgstr "Erotic"
 
+msgid "Department Store"
+msgstr "Department Store"
+
+msgid "Mall"
+msgstr "Mall"
+
 msgid "Florist"
 msgstr "Florist"
 
@@ -22657,6 +22686,9 @@ msgstr "Musical Instrument"
 msgid "Toys"
 msgstr "Toys"
 
+msgid "Gift/Souvenir"
+msgstr "Gift/Souvenir"
+
 msgid "Variety Store"
 msgstr "Variety Store"
 
@@ -22672,6 +22704,9 @@ msgstr "Bag"
 msgid "Pet"
 msgstr "Pet"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Funeral Directors"
 
@@ -24634,9 +24669,6 @@ msgstr "Find and fix addresses without (valid) streets."
 msgid "Address Edit"
 msgstr "Address edit"
 
-msgid "Searching"
-msgstr "Searching"
-
 msgid "Guess values for "
 msgstr "Guess values for "
 
@@ -24938,9 +24970,6 @@ msgstr "Prev OSMI bug"
 msgid "Next OSMI bug"
 msgstr "Next OSMI bug"
 
-msgid "Osm Inspector Bugs"
-msgstr "Osm Inspector Bugs"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector Bugs"
 
@@ -25682,13 +25711,6 @@ msgid "Auto sourcing"
 msgstr "Auto sourcing"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26353,6 +26375,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -27837,12 +27935,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27858,6 +27962,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30362,6 +30469,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrace"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Cannot place a node outside of the world."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Browse"
 
diff --git a/i18n/po/eo.po b/i18n/po/eo.po
index 636777a..e7eed85 100644
--- a/i18n/po/eo.po
+++ b/i18n/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-10-03 21:33+0000\n"
 "Last-Translator: Michael Moroni <michael.moroni at openmailbox.org>\n"
 "Language-Team: Esperanto <eo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:39+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:38+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: eo\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1365,6 +1365,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2083,17 +2092,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2505,6 +2508,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2526,6 +2535,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4361,9 +4378,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7853,9 +7867,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8752,6 +8763,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8851,6 +8865,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10781,9 +10802,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11852,34 +11870,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11910,52 +11946,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12306,10 +12324,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14456,6 +14470,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14748,6 +14765,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14934,12 +14954,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15194,6 +15220,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15227,12 +15263,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15539,6 +15573,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15854,59 +15893,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18393,6 +18382,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18504,12 +18520,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18561,9 +18571,6 @@ msgstr "urbo"
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18685,12 +18692,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18722,6 +18723,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19029,10 +19042,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19062,24 +19081,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19373,6 +19380,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20060,9 +20085,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21198,10 +21220,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21228,10 +21247,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21258,6 +21280,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21273,6 +21298,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23189,9 +23217,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23485,9 +23510,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24142,13 +24164,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24774,6 +24789,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26207,12 +26298,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26228,6 +26325,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28687,6 +28787,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/es.po b/i18n/po/es.po
index 94165e2..a79bbb1 100644
--- a/i18n/po/es.po
+++ b/i18n/po/es.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-02 22:37+0000\n"
-"Last-Translator: Pyro Maggot <isc.chungvazquez at gmail.com>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 18:41+0000\n"
+"Last-Translator: Emilio Gomez Fernandez <Unknown>\n"
 "Language-Team: Spanish <es at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:01+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:58+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: es\n"
 "X-Language: es_ES\n"
 "X-Source-Language: C\n"
@@ -1494,6 +1494,15 @@ msgstr[1] ""
 "Hay más de una vía utilizando los nodos que ha seleccionado. Por favor "
 "seleccione la vía también."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "¿Qué vía debería reutilizar el historial de {0}?"
+
+msgid " [id: {0}]"
+msgstr " [ID: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segmento {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Debe seleccionar dos o más nodos para dividir una vía circular."
 
@@ -2276,17 +2285,11 @@ msgstr ""
 "Haga clic para mover el nodo resaltado. Mantenga pulsado Ctrl para añadir "
 "nuevos nodos o Alt para eliminar."
 
-msgid "Cannot place a node outside of the world."
-msgstr "No se puede colocar un nodo fuera del mundo."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Añadir un nuevo nodo a la vía"
 msgstr[1] "Añadir nuevo nodos a las {0} vías"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "No se puede eliminar el nodo que hace referencia a varios objetos"
-
 msgid "Cannot delete node that has tags"
 msgstr "No se puede eliminar el nodo que tiene etiquetas"
 
@@ -2556,7 +2559,7 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Incluir en la búsqueda además objetos incompletos o eliminados"
 
 msgid "standard"
-msgstr ""
+msgstr "estándar"
 
 msgid "regular expression"
 msgstr "expresión regular"
@@ -2739,6 +2742,12 @@ msgstr "todos los hijos de los objetos coincidentes con la expresión"
 msgid "all parents of objects matching the expression"
 msgstr "todos los padres de los objetos coincidentes con la expresión"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relación que contiene un miembro de la función <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objetos siendo parte de una relación como rol <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ésimo miembro de la relación y/o n-ésimo nodo de la vía"
 
@@ -2763,6 +2772,14 @@ msgstr ""
 "objetos (y todos sus vías-nodos / miembros de la relación) en el área "
 "descargada"
 
+msgid "Searching"
+msgstr "Buscando"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Buscando en {0} objeto"
+msgstr[1] "Buscando en {0} objetos"
+
 msgid "No match found for ''{0}''"
 msgstr "No se encontraron coincidencias para \"{0}\""
 
@@ -4785,9 +4802,6 @@ msgstr "No mostrar de nuevo (esta sesión)"
 msgid "Do not show again (remembers choice)"
 msgstr "No mostrar otra vez (recordar elección)"
 
-msgid " [id: {0}]"
-msgstr " [ID: {0}]"
-
 msgid "incomplete"
 msgstr "incompleto"
 
@@ -8673,9 +8687,6 @@ msgstr "Relación {0}"
 msgid "Object"
 msgstr "Objeto"
 
-msgid "not present"
-msgstr "no presente"
-
 msgid "Changeset comment"
 msgstr "Comentar Changeset"
 
@@ -9729,6 +9740,9 @@ msgstr "Escala de píxeles: {0}"
 msgid "Best zoom: {0}"
 msgstr "Mejor zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Tamaño estimado de la caché: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Estadísticas de caché: {0}"
 
@@ -9830,6 +9844,17 @@ msgstr "Marcador anterior"
 msgid "Jump to previous marker"
 msgstr "Saltar al marcador anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Para añadir otra capa es necesario asignar al menos {0,number,#} MB de "
+"memoria a JOSM usando la opción -Xmx {0,number,#}M (ver "
+"http://forum.openstreetmap.org/viewtopic.php?id = 25677).\n"
+"Actualmente tiene {1,number,#}MB de memoria asignada para JOSM"
+
 msgid "All projections are supported"
 msgstr "Todas las proyecciones son compatibles"
 
@@ -12034,9 +12059,6 @@ msgstr "Directorio del caché de teselas: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Tamaño máximo de caché de disco (por las imágenes) en MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Máximo número de objetos en memoria cache: "
-
 msgid "Tiles zoom offset:"
 msgstr "Compensación de zoom de tiles"
 
@@ -13218,35 +13240,53 @@ msgstr "Cambiar Etiquetas"
 msgid "Add or remove toolbar button"
 msgstr "Agregar o eliminar barra de herramientas"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisito desconocido: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipo desconocido: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Expresión de miembro ielgal: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grupo predefinido {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Más información sobre esta característica"
+msgid "Preset group {0}"
+msgstr "Grupo predefinido {0}"
 
-msgid "Available roles"
-msgstr "Roles disponibles"
+msgid "Reference {0} is being used before it was defined"
+msgstr "La referencia {0} está siendo usada antes de haber sido definida"
 
-msgid "role"
-msgstr "rol"
+msgid "Roles cannot appear more than once"
+msgstr "Los roles no pueden aparecer más de una vez"
 
-msgid "count"
-msgstr "conteo"
+msgid "Preset role element without parent"
+msgstr "Rol preestablecido sin padre"
 
-msgid "elements"
-msgstr "elementos"
+msgid "Preset sub element without parent"
+msgstr "Subelmento preestablecido sin padre"
 
-msgid "Optional Attributes:"
-msgstr "Atributos opcionales:"
+msgid "Error parsing {0}: "
+msgstr "Error analizando {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Seleccionar un autoincremental de {0} para este campo"
+msgid "Search preset"
+msgstr "Buscar predefinido"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Cancelar el autoincremento de este campo"
+msgid "Show preset search dialog"
+msgstr "Mostrar diálogo de búsqueda preestablecida"
+
+msgid "Search presets"
+msgstr "Buscar predefinidos"
+
+msgid "Presets"
+msgstr "Predefinidos"
+
+msgid "Search for objects by preset"
+msgstr "Buscar objetos por tipo predefinido"
+
+msgid "Show only applicable to selection"
+msgstr "La muestra sólo es aplicable a la selección"
+
+msgid "Search in tags"
+msgstr "Buscar en etiquetas"
+
+msgid "Add toolbar button"
+msgstr "Añadir botón de barra de herramientas"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13286,53 +13326,35 @@ msgstr ""
 "Etiquetado predeterminado roto \"{0}-{1}\" - el número de objetos en "
 "''short_descriptions'' debe coincidir con ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipo desconocido: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grupo predefinido {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Grupo predefinido {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "La referencia {0} está siendo usada antes de haber sido definida"
-
-msgid "Roles cannot appear more than once"
-msgstr "Los roles no pueden aparecer más de una vez"
-
-msgid "Preset role element without parent"
-msgstr "Rol preestablecido sin padre"
-
-msgid "Preset sub element without parent"
-msgstr "Subelmento preestablecido sin padre"
+msgid "More information about this feature"
+msgstr "Más información sobre esta característica"
 
-msgid "Error parsing {0}: "
-msgstr "Error analizando {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributos opcionales:"
 
-msgid "Search preset"
-msgstr "Buscar predefinido"
+msgid "Unknown requisite: {0}"
+msgstr "Requisito desconocido: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Mostrar diálogo de búsqueda preestablecida"
+msgid "Illegal member expression: {0}"
+msgstr "Expresión de miembro ielgal: {0}"
 
-msgid "Search presets"
-msgstr "Buscar predefinidos"
+msgid "Available roles"
+msgstr "Roles disponibles"
 
-msgid "Presets"
-msgstr "Predefinidos"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
-msgstr "Buscar objetos por tipo predefinido"
+msgid "count"
+msgstr "conteo"
 
-msgid "Show only applicable to selection"
-msgstr "La muestra sólo es aplicable a la selección"
+msgid "elements"
+msgstr "elementos"
 
-msgid "Search in tags"
-msgstr "Buscar en etiquetas"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Seleccionar un autoincremental de {0} para este campo"
 
-msgid "Add toolbar button"
-msgstr "Añadir botón de barra de herramientas"
+msgid "Cancel auto-increment for this field"
+msgstr "Cancelar el autoincremento de este campo"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13745,12 +13767,6 @@ msgstr "Mensaje notificador"
 msgid "{0} not available (offline mode)"
 msgstr "{0} no disponible (modo sin conexión)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"No hay primitiva con el id {0} en el conjunto local de datos. No se puede "
-"inferir el tipo de primitiva."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Obteniendo un conjunto de nodos de ''{0}''"
 
@@ -16238,6 +16254,9 @@ msgstr "Tolosa - Ortofotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Ortofotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16535,6 +16554,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (imagen aérea)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (caminos)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16721,12 +16743,18 @@ msgstr "Surrey Investigación de Aire"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-pulgadas Escocia 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k Primera Serie 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-pulgada Séptima Serie 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k histórica (OSM-Óptima)"
 
@@ -16986,6 +17014,22 @@ msgstr ""
 "ellos alrededor del designado como pivote."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Proporciona componentes de la biblioteca Apache Commons. No está destinado a "
+"ser instalado directamente por los usuarios, sino más bien como una "
+"dependencia de otros componentes."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Proporciona la biblioteca Apache HTTP. No está destinado a ser instalado "
+"directamente por los usuarios, sino más bien como una dependencia de otros "
+"componentes."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -17036,18 +17080,13 @@ msgstr ""
 "Implementa una línea de comandos y permite crear tus comandos. Vea el enlace "
 "para los comandos estándar (arco, círculo, etc)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Proporciona la biblioteca Commons Imaging. No está destinado para ser "
-"instalado directamente por los usuarios, sino más bien como una dependencia "
-"de otros complementos."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Peligro: ¡Experimental!) Herramienta para fusión (mezclar) de datos."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Crea una cuadrícula de viales"
 
@@ -17453,6 +17492,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Crea hileras de edificios adosados a partir de bloques únicos"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17790,62 +17834,9 @@ msgstr "Operador"
 msgid "Service Times"
 msgstr "Horarios del servicio"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "amanecer, atardecer"
-
-msgid "Su 09:30,11:00"
-msgstr "Do 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,feriados 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "S 18:00; D 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Vi 08:00-18:00; Abr 10-15 off; Jun 07:00-20:00; Ago off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "S 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "semanas 1-53/2 V 09:00-12:00; semanas 2-52/2 X 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horario de apertura"
 
-msgid "24/7"
-msgstr "las 24 horas, 7 días a la semana"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "S-D 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "L-V 08:30-20:00; Sa,Su 08:00-15:00; PH cerrado"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Lu-Vi 08:30-20:00, Ma-Ju 08:00-15:00; Sá 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"L-S 08:00-18:00; 10- 15 Abril cerrado; Junio 08:00-14:00; Agosto cerrado; 25 "
-"Diciembre cerrado"
-
-msgid "sunrise-sunset"
-msgstr "amanecer-anochecer"
-
-msgid "Su 10:00+"
-msgstr "D 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Sillas de ruedas"
 
@@ -20374,6 +20365,33 @@ msgstr "Albergue"
 msgid "Alpine Hut"
 msgstr "Cabaña alpina"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Permisos de acceso"
+
+msgid "Shower"
+msgstr "Ducha"
+
+msgid "seasonal"
+msgstr "estacional"
+
+msgid "Reservation"
+msgstr "Reserva"
+
+msgid "required"
+msgstr "obligatorio"
+
+msgid "recommended"
+msgstr "recomendado"
+
+msgid "members_only"
+msgstr "solo miembros"
+
+msgid "Closer Description"
+msgstr "Descripción detallada"
+
 msgid "Caravan Site/RV Park"
 msgstr "Sitio de pernocte para vehículos"
 
@@ -20485,12 +20503,6 @@ msgstr "Patio cervecero"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Club nocturno"
-
-msgid "Strip Club"
-msgstr "Club de alterne (striptease)"
-
 msgid "Tourism"
 msgstr "Turismo"
 
@@ -20542,9 +20554,6 @@ msgstr "ciudad"
 msgid "region"
 msgstr "región"
 
-msgid "Closer Description"
-msgstr "Descripción detallada"
-
 msgid "Routes shown for:"
 msgstr "Rutas mostradas para:"
 
@@ -20667,12 +20676,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Equitación"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Burdel o prostíbulo"
-
 msgid "Playground"
 msgstr "Zona de juegos"
 
@@ -20704,6 +20707,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina privada"
 
+msgid "Night Club"
+msgstr "Club nocturno"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Club de alterne (striptease)"
+
+msgid "Brothel"
+msgstr "Burdel o prostíbulo"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -21013,11 +21028,17 @@ msgstr "Veterinario"
 msgid "Toilets/Restrooms"
 msgstr "Baños"
 
-msgid "Access rights"
-msgstr "Permisos de acceso"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Mujer"
 
-msgid "seasonal"
-msgstr "estacional"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Hombre"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisex"
 
 msgid "flush"
 msgstr "cisterna (evacuación de desechos con agua)"
@@ -21046,39 +21067,27 @@ msgstr "cuclillas"
 msgid "urinal"
 msgstr "urinario"
 
-msgid "Shower"
-msgstr "Ducha"
-
 msgid "Post Box"
 msgstr "Buzón de correos"
 
 msgid "Collection times"
 msgstr "Horarios de recolección"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "columna"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "lámpara"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "muro"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "metro"
 
 msgid "Drive through"
 msgstr "Utilizable desde el volante"
@@ -21357,6 +21366,24 @@ msgstr "succión"
 msgid "Count"
 msgstr "Cuenta"
 
+msgid "Compressed Air"
+msgstr "Aire comprimido"
+
+msgid "Valves"
+msgstr "Válvulas"
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Columna para publicidad"
 
@@ -22044,9 +22071,6 @@ msgstr "Faro"
 msgid "Street Lamp"
 msgstr "Farola"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Lu-Vi 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Estación de monitorización"
 
@@ -23184,11 +23208,8 @@ msgstr "Puesto de periódicos"
 msgid "Ticket"
 msgstr "Boleto"
 
-msgid "Department Store"
-msgstr "Grandes almacenes"
-
-msgid "Mall"
-msgstr "Centro comercial"
+msgid "For the body"
+msgstr "Para el cuerpo"
 
 msgid "Chemist"
 msgstr "Droguería o parafarmacia"
@@ -23214,12 +23235,15 @@ msgstr "Aparatos ortopédicos"
 msgid "Jewellery"
 msgstr "Joyas"
 
-msgid "Gift/Souvenir"
-msgstr "Regalo/recuerdo"
-
 msgid "Erotic"
 msgstr "Erótico"
 
+msgid "Department Store"
+msgstr "Grandes almacenes"
+
+msgid "Mall"
+msgstr "Centro comercial"
+
 msgid "Florist"
 msgstr "Floristería"
 
@@ -23244,6 +23268,9 @@ msgstr "Instrumentos musicales"
 msgid "Toys"
 msgstr "Juguetes"
 
+msgid "Gift/Souvenir"
+msgstr "Regalo/recuerdo"
+
 msgid "Variety Store"
 msgstr "Tienda de variedades o bazar"
 
@@ -23259,6 +23286,9 @@ msgstr "Cartera"
 msgid "Pet"
 msgstr "Mascota"
 
+msgid "Photo"
+msgstr "Fotografia"
+
 msgid "Funeral Directors"
 msgstr "Funeraria"
 
@@ -25256,9 +25286,6 @@ msgstr "Encontrar y corregir direcciones sin calles (válidas)."
 msgid "Address Edit"
 msgstr "Editar direcciones"
 
-msgid "Searching"
-msgstr "Buscando"
-
 msgid "Guess values for "
 msgstr "Valores supuestos para "
 
@@ -25564,9 +25591,6 @@ msgstr "Previsualizar error OSMI"
 msgid "Next OSMI bug"
 msgstr "Siguiente error OSMI"
 
-msgid "Osm Inspector Bugs"
-msgstr "Errores de Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Errores de Osm Inspector"
 
@@ -26367,18 +26391,6 @@ msgid "Auto sourcing"
 msgstr "Digitalización automática"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"El complemento Catastro-fr utilizaba el atajo F11 para grabar, Plugin "
-"cadastre-fr used the key shortcut F11 for sujetar,\n"
-"el cual ahora es utilizado para cambiar al modo pantalla completa.\n"
-"El nuevo atajo es F10, pero puede cambiar el atajo de teclado\n"
-"en las preferencias si así lo desea."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -27067,6 +27079,82 @@ msgstr "Selección vacía"
 msgid "Invalid reference or subject"
 msgstr "Referencia o sujeto inválido"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Dirección"
 
@@ -28604,12 +28692,18 @@ msgstr "Meses"
 msgid "Days"
 msgstr "Días"
 
+msgid "Imported images"
+msgstr "Imágenes importadas"
+
 msgid "Mapillary filter"
 msgstr "Filtro de Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Abrir diálogo del filtro de Mapillary"
 
+msgid "Not older than: "
+msgstr "No más antiguas que: "
+
 msgid "Downloaded images"
 msgstr "Imágenes descargadas"
 
@@ -28625,6 +28719,9 @@ msgstr "Historial de Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Abrir el diálogo del historial de Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Imágenes de Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Abrir ventana de Mapillary"
 
@@ -31249,6 +31346,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Hilera de casas adosadas"
 
+msgid "To-fix"
+msgstr "To-fix"
+
+msgid "Open to-fix window."
+msgstr "Abrir  la ventana to-fix"
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr "Omitir"
+
+msgid "Skip Error"
+msgstr "Omitir error"
+
+msgid "Fixed"
+msgstr "Corregido"
+
+msgid "Fixed Error"
+msgstr "Error corregido"
+
+msgid "Not an error"
+msgstr "No es un error"
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr "Servidor de mantenimiento"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr "Ocurrió un error, inténtelo de nuevo"
+
+msgid "Cannot place a node outside of the world."
+msgstr "No se puede colocar un nodo fuera del mundo."
+
+msgid "Layer to draw OSM error"
+msgstr "Capa para dibujar error de OSM"
+
 msgid "Browse"
 msgstr "Explorar"
 
diff --git a/i18n/po/et.po b/i18n/po/et.po
index be63081..5c5dd9f 100644
--- a/i18n/po/et.po
+++ b/i18n/po/et.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-08-12 16:11+0000\n"
 "Last-Translator: AivoK <aivo.kuhlberg at hot.ee>\n"
 "Language-Team: Estonian <et at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:40+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:39+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: et\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1415,6 +1415,15 @@ msgstr[0] ""
 msgstr[1] ""
 "Valitud sõlmi võib kasutada mitut moodi. Vali ka joon, millel sõlm asub."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Ringikujulise joone poolitamiseks on vaja valida vähemalt kaks sõlme."
@@ -2150,17 +2159,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2584,6 +2587,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2606,6 +2615,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objektid allalaadimisalas (ja kõik nende sõlmed / relatsiooni liikmed)"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4456,9 +4473,6 @@ msgstr "Ära seda teadet rohkem näita (sel seansil)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ära seda teadet rohkem näita (valik jäetakse meelde)"
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr "lõpetamata"
 
@@ -7980,9 +7994,6 @@ msgstr ""
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "puudub"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8912,6 +8923,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9013,6 +9027,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10965,9 +10986,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12057,34 +12075,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
-msgstr ""
+msgid "Unknown type: {0}"
+msgstr "Tundmatu tüüp: {0}"
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Eelseadete grupp {1} / {0}"
+
+msgid "Preset group {0}"
+msgstr "Eelseadete grupp {0}"
+
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Rohkem teavet sellest funktsioonist"
+msgid "Roles cannot appear more than once"
+msgstr ""
 
-msgid "Available roles"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "role"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "count"
+msgid "Error parsing {0}: "
+msgstr "Viga sõelumisel {0}: "
+
+msgid "Search preset"
+msgstr "Otsi eelseadetest"
+
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "elements"
+msgid "Search presets"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Valikulised tunnused:"
+msgid "Presets"
+msgstr "Eelseaded"
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search for objects by preset"
+msgstr "Otsi objekte eelseadede järgi"
+
+msgid "Show only applicable to selection"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12115,52 +12151,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Tundmatu tüüp: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Eelseadete grupp {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Eelseadete grupp {0}"
+msgid "More information about this feature"
+msgstr "Rohkem teavet sellest funktsioonist"
 
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Valikulised tunnused:"
 
-msgid "Roles cannot appear more than once"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Preset role element without parent"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Available roles"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Viga sõelumisel {0}: "
-
-msgid "Search preset"
-msgstr "Otsi eelseadetest"
-
-msgid "Show preset search dialog"
+msgid "role"
 msgstr ""
 
-msgid "Search presets"
+msgid "count"
 msgstr ""
 
-msgid "Presets"
-msgstr "Eelseaded"
-
-msgid "Search for objects by preset"
-msgstr "Otsi objekte eelseadede järgi"
-
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12515,10 +12533,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14707,6 +14721,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14999,6 +15016,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15185,12 +15205,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15445,6 +15471,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15478,12 +15514,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15797,6 +15831,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16114,59 +16153,9 @@ msgstr "Operaatorfirma"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Avatud"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Ratastoolid"
 
@@ -18653,6 +18642,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr "Alpimaja"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Täpsem kirjeldus"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18764,12 +18780,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Baar"
 
-msgid "Night Club"
-msgstr "Ööklubi"
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turism"
 
@@ -18821,9 +18831,6 @@ msgstr "linn"
 msgid "region"
 msgstr "regioon"
 
-msgid "Closer Description"
-msgstr "Täpsem kirjeldus"
-
 msgid "Routes shown for:"
 msgstr "Märgitud marsruudid:"
 
@@ -18945,12 +18952,6 @@ msgstr "Saun"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Lõbumaja"
-
 msgid "Playground"
 msgstr "Mänguväljak"
 
@@ -18982,6 +18983,18 @@ msgstr "Kalapüük"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr "Ööklubi"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr "Lõbumaja"
+
 msgid "Culture"
 msgstr "Kultuur"
 
@@ -19289,10 +19302,16 @@ msgstr "Loomaarst"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19322,24 +19341,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Postkast"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19633,6 +19640,24 @@ msgstr "imemine"
 msgid "Count"
 msgstr "Arv"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20320,9 +20345,6 @@ msgstr "Majakas"
 msgid "Street Lamp"
 msgstr "Tänavavalgusti"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "E-R 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21458,11 +21480,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Kaubamaja"
-
-msgid "Mall"
-msgstr "Kaubanduskeskus"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Apteek"
@@ -21488,12 +21507,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "Erootikakaubad"
 
+msgid "Department Store"
+msgstr "Kaubamaja"
+
+msgid "Mall"
+msgstr "Kaubanduskeskus"
+
 msgid "Florist"
 msgstr "Lilled"
 
@@ -21518,6 +21540,9 @@ msgstr "Muusikariistad"
 msgid "Toys"
 msgstr "Mänguasjad"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21533,6 +21558,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23449,9 +23477,6 @@ msgstr "Otsib ja parandab aadresse, mille puudub tänava nimi."
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23745,9 +23770,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24412,13 +24434,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25045,6 +25060,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26483,12 +26574,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26504,6 +26601,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28971,6 +29071,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Ridaelamu"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/eu.po b/i18n/po/eu.po
index 34a2f8b..4a2952d 100644
--- a/i18n/po/eu.po
+++ b/i18n/po/eu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-03-09 16:55+0000\n"
 "Last-Translator: Asier Sarasua Garmendia <Unknown>\n"
 "Language-Team: Basque <eu at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:34+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:34+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: eu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1416,6 +1416,15 @@ msgstr[1] ""
 "Bide bat baino gehiagok darabilte aukeratu dituzun nodoak. Aukeratu bidea "
 "ere."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id-a: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Bide biribil bat bereizteko bi nodo, gutxienez, aukeratu behar dituzu."
@@ -2165,17 +2174,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2595,6 +2598,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2616,6 +2625,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Ez da ezer aurkitu ''{0}'' bilaketarentzat"
 
@@ -4512,9 +4529,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Ez erakutsi berriz (aukera gogoratzen du)"
 
-msgid " [id: {0}]"
-msgstr " [id-a: {0}]"
-
 msgid "incomplete"
 msgstr "osatu gabea"
 
@@ -8048,9 +8062,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8947,6 +8958,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9046,6 +9060,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10978,9 +10999,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12049,34 +12067,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr "Aurrezarpenak"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12107,52 +12143,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Aurrezarpenak"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12499,10 +12517,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14655,6 +14669,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14947,6 +14964,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15133,12 +15153,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15393,6 +15419,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15427,12 +15463,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15768,6 +15802,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Bloke bakanetatik elkar-atxikitako etxeak sortzen ditu"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16097,59 +16136,9 @@ msgstr "Operadorea"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Irekiera-ordutegia"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Gurpil-aulkiak"
 
@@ -18636,6 +18625,33 @@ msgstr "Aterpetxea"
 msgid "Alpine Hut"
 msgstr "Mediko aterpea"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Deskribapen zehatzagoa"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18747,12 +18763,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Taberna"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turismoa"
 
@@ -18804,9 +18814,6 @@ msgstr "hiria"
 msgid "region"
 msgstr "erregioa"
 
-msgid "Closer Description"
-msgstr "Deskribapen zehatzagoa"
-
 msgid "Routes shown for:"
 msgstr "Erakutsitako bideak:"
 
@@ -18928,12 +18935,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Jolastokia"
 
@@ -18965,6 +18966,18 @@ msgstr "Arrantza"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19272,10 +19285,16 @@ msgstr "Albaitaria"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19305,24 +19324,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Gutunontzia"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19616,6 +19623,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20303,9 +20328,6 @@ msgstr "Itsasargia"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21441,10 +21463,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21471,10 +21490,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21501,6 +21523,9 @@ msgstr ""
 msgid "Toys"
 msgstr "Jostailuak"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21516,6 +21541,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23432,9 +23460,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23728,9 +23753,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24385,13 +24407,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25017,6 +25032,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26450,12 +26541,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26471,6 +26568,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28935,6 +29035,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/fa.po b/i18n/po/fa.po
index 6a34ae3..63ba337 100644
--- a/i18n/po/fa.po
+++ b/i18n/po/fa.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2014-03-18 07:32+0000\n"
 "Last-Translator: Saeed Ghazi Joolaee <Unknown>\n"
 "Language-Team: Persian <fa at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:56+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:53+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: fa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1432,6 +1432,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2150,17 +2159,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2572,6 +2575,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2593,6 +2602,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4426,9 +4443,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7919,9 +7933,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8823,6 +8834,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8922,6 +8936,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10852,9 +10873,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11923,34 +11941,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11981,52 +12017,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12373,10 +12391,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14523,6 +14537,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14815,6 +14832,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15001,12 +15021,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15261,6 +15287,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15294,12 +15330,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15606,6 +15640,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15921,59 +15960,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18460,6 +18449,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18571,12 +18587,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18628,9 +18638,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18752,12 +18759,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18789,6 +18790,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19096,10 +19109,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19129,24 +19148,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19440,6 +19447,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20127,9 +20152,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21265,10 +21287,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21295,10 +21314,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21325,6 +21347,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21340,6 +21365,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23256,9 +23284,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23552,9 +23577,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24209,13 +24231,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24841,6 +24856,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26274,12 +26365,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26295,6 +26392,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28754,6 +28854,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/fi.po b/i18n/po/fi.po
index 4473ac1..6470474 100644
--- a/i18n/po/fi.po
+++ b/i18n/po/fi.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-07 15:47+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-16 12:02+0000\n"
 "Last-Translator: Lauri Kytömaa <Unknown>\n"
 "Language-Team: Finnish <fi at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:41+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:40+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: fi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1465,6 +1465,15 @@ msgstr[1] ""
 "Useampi kuin yksi polku kulkee valittujen pisteiden kautta. Ole hyvä ja "
 "valitse myös polku jonka haluat katkaista."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Vähintään kaksi pistettä tulee valita ympyräpolun katkaisemiseksi."
 
@@ -2244,17 +2253,11 @@ msgstr ""
 "Napsautus siirtää korostetun pisteen. Paina Ctrl lisätäksesi uusia pisteitä, "
 "tai Alt poistaaksesi niitä."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Pistettä ei voi sijoittaa maailman ulkopuolelle."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Lisää uusi piste polkuun"
 msgstr[1] "Lisää uusi piste {0} polkuun"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Useampaan objektiin kuuluvaa pistettä ei voi poistaa"
-
 msgid "Cannot delete node that has tags"
 msgstr "Tageja sisältävää pistettä ei voi poistaa"
 
@@ -2692,6 +2695,12 @@ msgstr "kaikki hakuehdot täyttävien kohteiden lapsikohteet"
 msgid "all parents of objects matching the expression"
 msgstr "kaikki hakuehdot täyttävien kohteiden emokohteet"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "Relaation n:s jäsen ja/tai polun n:s piste"
 
@@ -2717,6 +2726,14 @@ msgstr ""
 "kaikki kohteet ladatulta alueelta (ja kaikki näiden polkujen muut pisteet / "
 "relaatioiden muut jäsenet)"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Hakusanalla \"{0}\" ei löytynyt mitään"
 
@@ -3453,7 +3470,7 @@ msgid "Layer name"
 msgstr ""
 
 msgid "Projection"
-msgstr ""
+msgstr "Projektio"
 
 msgid "Matrix set identifier"
 msgstr ""
@@ -3673,7 +3690,7 @@ msgid "areatext"
 msgstr "alueteksti"
 
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
-msgstr ""
+msgstr "UTM projektio (''+proj=utm'') edellyttää parametria ''+zone=...''"
 
 msgid "Expected integer value in range 1-60 for ''+zone=...'' parameter."
 msgstr ""
@@ -4659,9 +4676,6 @@ msgstr "Älä näytä uudestaan (tämän muokkaussession aikana)"
 msgid "Do not show again (remembers choice)"
 msgstr "Älä näytä uudestaan (muistaa valinnan)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "keskeneräinen"
 
@@ -6601,7 +6615,7 @@ msgid "No"
 msgstr "Ei"
 
 msgid "Style settings"
-msgstr ""
+msgstr "Tyylin asetukset"
 
 msgid "Customize the style"
 msgstr ""
@@ -6857,10 +6871,10 @@ msgid "Display the objects created, updated, and deleted by the changeset"
 msgstr "Näytä muutoskokoelmassa luodut, muokatut ja poistetut objektit"
 
 msgid "Discussion"
-msgstr ""
+msgstr "Keskustelu"
 
 msgid "Display the public discussion around this changeset"
-msgstr ""
+msgstr "Näytä muutoskokoelmaa koskeva (julkinen) keskustelu"
 
 msgid "Changeset Management Dialog"
 msgstr "Muutoskokoelmat"
@@ -6940,7 +6954,7 @@ msgid "Closed at"
 msgstr "Suljettu"
 
 msgid "Discussions"
-msgstr ""
+msgstr "Keskustelua"
 
 msgid "Downloading changeset content"
 msgstr "Ladataan muutoskokoelman sisältöä"
@@ -7060,12 +7074,14 @@ msgid ""
 "Zoom to the objects in the content of this changeset in the current data "
 "layer"
 msgstr ""
+"Sovita karttanäkymä niihin muutoskokoelman kohteisiin, jotka löytyvät "
+"aktiiviselta datatasolta"
 
 msgid "Update changeset discussion"
-msgstr ""
+msgstr "Päivitä muutoskokoelman keskustelu"
 
 msgid "Update the changeset discussion from the OSM server"
-msgstr ""
+msgstr "Lataa/päivitä muutoskokoelmaan liitetty keskustelu OSM-palvelimelta"
 
 msgid "Date"
 msgstr "Päivämäärä"
@@ -7292,6 +7308,8 @@ msgid ""
 "Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default "
 "query."
 msgstr ""
+"Asetukselle ''{0}'', luettiin odottamaton arvo ''{1}''. Palautetaan käyttöön "
+"oletuskysely."
 
 msgid "Cannot create changeset query for open changesets of anonymous user"
 msgstr ""
@@ -8364,9 +8382,6 @@ msgstr "Relaatio {0}"
 msgid "Object"
 msgstr "Objekti"
 
-msgid "not present"
-msgstr "ei olemassa"
-
 msgid "Changeset comment"
 msgstr "Muutoskokoelman kommentti oli"
 
@@ -9385,6 +9400,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9484,6 +9502,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Taso tukee kaikkia projektioita"
 
@@ -9492,6 +9517,9 @@ msgid ""
 "Supported projections are: {2}\n"
 "Change the projection again or remove the layer."
 msgstr ""
+"Taso {0} ei tue valittua karttaprojektiota {1}.\n"
+"Tason tukemat projektiot ovat: {2}\n"
+"Muuta projektiota tai poista taso."
 
 msgid "Save Layer"
 msgstr "Tallenna kerros"
@@ -10182,7 +10210,7 @@ msgid ""
 msgstr ""
 
 msgid "Use default settings"
-msgstr ""
+msgstr "Käytä oletusasetuksia"
 
 msgid "Consumer Key:"
 msgstr ""
@@ -10200,7 +10228,7 @@ msgid "Authorize URL:"
 msgstr ""
 
 msgid "Click to reset the OAuth settings to default values"
-msgstr ""
+msgstr "Valinta palauttaa OAuth-asetukset oletusarvoihin"
 
 msgid "Click to abort resetting to the OAuth default values"
 msgstr ""
@@ -10209,6 +10237,8 @@ msgid ""
 "<html>JOSM is about to reset the OAuth settings to default values.<br>The "
 "current custom settings are not saved.</html>"
 msgstr ""
+"<html>JOSMin OAuth-asetukset ollaan palauttamassa oletusarvoihin. "
+"<br>Nykyisiä asetuksia ei tallenneta mihinkään.</html>"
 
 msgid "Overwrite custom OAuth settings?"
 msgstr ""
@@ -10848,7 +10878,7 @@ msgid "Please select the row to edit."
 msgstr "Ole hyvä ja valitse muokattava rivi."
 
 msgid "Select Setting Type:"
-msgstr ""
+msgstr "Asetusmuuttujan tyyppi"
 
 msgid "Simple"
 msgstr ""
@@ -10863,7 +10893,7 @@ msgid "List of maps"
 msgstr ""
 
 msgid "Add setting"
-msgstr ""
+msgstr "Lisää asetusmuuttuja"
 
 msgid "Please select the row to delete."
 msgstr "Ole hyvä ja valitse poistettava rivi."
@@ -11458,10 +11488,10 @@ msgid "{0} cache, total cache size: {1} bytes"
 msgstr "{0} välimuistin koko: {1} tavua"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Nimi välimuistissa"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Välimuistiin säilöttyjä kohteita"
 
 msgid "imagery fade"
 msgstr "kuvatason häivytys"
@@ -11470,7 +11500,7 @@ msgid "Fade Color: "
 msgstr "Häivytyksen väri: "
 
 msgid "Fade amount: "
-msgstr ""
+msgstr "Häivytyksen voimakkuus: "
 
 msgid "Soft"
 msgstr "Lievä"
@@ -11482,16 +11512,13 @@ msgid "Sharpen (requires layer re-add): "
 msgstr "Tarkennus (edellyttää tason lisäämistä uudelleen): "
 
 msgid "Tile cache directory: "
-msgstr ""
+msgstr "Taustakuvapalojen välimuistikansio: "
 
 msgid "Maximum size of disk cache (per imagery) in MB: "
-msgstr ""
-
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
+msgstr "Levyvälimuistin suurin sallittu koko (kuvatasoa kohti) megatavuina: "
 
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Tarkennustason poikkeama näytetystä tarkkuudesta"
 
 msgid "Imagery Preferences"
 msgstr "Kuvatasojen asetukset"
@@ -11500,13 +11527,13 @@ msgid "Modify list of imagery layers displayed in the Imagery menu"
 msgstr "Muokkaa Kuvatasot-valikossa näkyvää listaa"
 
 msgid "Common Settings"
-msgstr ""
+msgstr "Yleiset asetukset"
 
 msgid "WMS Settings"
-msgstr ""
+msgstr "WMS-asetukset"
 
 msgid "TMS Settings"
-msgstr ""
+msgstr "TMS-asetukset"
 
 msgid "Imagery providers"
 msgstr "Kuvatasojen tarjoajat"
@@ -11515,7 +11542,7 @@ msgid "Offset bookmarks"
 msgstr "Tallennetut kuvatasojen siirrokset"
 
 msgid "Cache contents"
-msgstr ""
+msgstr "Välimuistin sisältö"
 
 msgid "Imagery Background: Default"
 msgstr ""
@@ -11563,16 +11590,16 @@ msgid "Layer"
 msgstr "Taso"
 
 msgid "Easting"
-msgstr ""
+msgstr "itäpoikkeama"
 
 msgid "Northing"
-msgstr ""
+msgstr "pohjoispoikkeama"
 
 msgid "Auto zoom by default: "
-msgstr ""
+msgstr "Valitse tarkennustaso automaattisesti: "
 
 msgid "Autoload tiles by default: "
-msgstr ""
+msgstr "Lataa kuvapalat automaattisesti: "
 
 msgid "Min. zoom level: "
 msgstr ""
@@ -11584,10 +11611,10 @@ msgid "Add to slippymap chooser: "
 msgstr ""
 
 msgid "Maximum concurrent downloads: "
-msgstr ""
+msgstr "Samanaikaisten latausten maksimimäärä: "
 
 msgid "Maximum concurrent downloads per host: "
-msgstr ""
+msgstr "Samanaikaisten latausten maksimimäärä palvelinta kohti: "
 
 msgid ""
 "That layer does not support any of JOSM''s projections,\n"
@@ -11597,10 +11624,10 @@ msgstr ""
 "joten sitä ei voida käyttää. Tätä viestiä ei näytetä uudelleen."
 
 msgid "Simultaneous connections:"
-msgstr ""
+msgstr "Samanaikaisia yhteyksiä:"
 
 msgid "Tile size:"
-msgstr ""
+msgstr "Kuvapalojen koko:"
 
 msgid "Auto save enabled"
 msgstr "Automaattitallennus käytössä"
@@ -12607,34 +12634,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr "Lisää painike tälle esivalinnalle työkaluriviin, tai poista se"
 
-msgid "Unknown requisite: {0}"
-msgstr ""
+msgid "Unknown type: {0}"
+msgstr "Tuntematon tyyppi: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Virheellinen jäseniin viittava hakulause: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Esivalintojen ryhmä {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Lisää tietoja tästä ominaisuudesta"
+msgid "Preset group {0}"
+msgstr "Esivalintojen ryhmä {0}"
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Lisäominaisuudet:"
+msgid "Error parsing {0}: "
+msgstr "Virhe käsiteltäessä {0}: "
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
+msgstr "Etsi vaihtoehdoista"
+
+msgid "Show preset search dialog"
+msgstr "Etsi sopivaa esivalintaa nimistä ja kuvauksista"
+
+msgid "Search presets"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Presets"
+msgstr "Esivalinnat"
+
+msgid "Search for objects by preset"
+msgstr "Etsi esivalintaa vastaavat kohteet"
+
+msgid "Show only applicable to selection"
+msgstr "Näytä vain nykyiseen valintaan sopivat vaihtoehdot"
+
+msgid "Search in tags"
+msgstr "Etsi myös esivalinnoissa käytetyistä tageista"
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12668,52 +12713,34 @@ msgstr ""
 "''short_descriptions''  voi olla vain yhtä monta kohtaa kuin kentässä "
 "''values'' on  arvona"
 
-msgid "Unknown type: {0}"
-msgstr "Tuntematon tyyppi: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Esivalintojen ryhmä {1} / {0}"
+msgid "More information about this feature"
+msgstr "Lisää tietoja tästä ominaisuudesta"
 
-msgid "Preset group {0}"
-msgstr "Esivalintojen ryhmä {0}"
+msgid "Optional Attributes:"
+msgstr "Lisäominaisuudet:"
 
-msgid "Reference {0} is being used before it was defined"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "Illegal member expression: {0}"
+msgstr "Virheellinen jäseniin viittava hakulause: {0}"
 
-msgid "Preset role element without parent"
+msgid "Available roles"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "role"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Virhe käsiteltäessä {0}: "
-
-msgid "Search preset"
-msgstr "Etsi vaihtoehdoista"
-
-msgid "Show preset search dialog"
-msgstr "Etsi sopivaa esivalintaa nimistä ja kuvauksista"
-
-msgid "Search presets"
+msgid "count"
 msgstr ""
 
-msgid "Presets"
-msgstr "Esivalinnat"
-
-msgid "Search for objects by preset"
-msgstr "Etsi esivalintaa vastaavat kohteet"
-
-msgid "Show only applicable to selection"
-msgstr "Näytä vain nykyiseen valintaan sopivat vaihtoehdot"
+msgid "elements"
+msgstr ""
 
-msgid "Search in tags"
-msgstr "Etsi myös esivalinnoissa käytetyistä tageista"
+msgid "Select auto-increment of {0} for this field"
+msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -13093,12 +13120,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Paikallisessa datajoukossa ei ole objektia {0}. Objektin tyyppiä ei voi "
-"päätellä."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Haetaan pistejoukkoa paikasta ''{0}''"
 
@@ -13417,6 +13438,8 @@ msgid ""
 "Illegal value for attribute ''changeset'' on new object {1}. Got {0}. "
 "Resetting to 0."
 msgstr ""
+"Uudella karttakohteella {1} epäkelpo arvo {0} muutoskokoelmatietona "
+"(''changeset''). Arvoksi palautettu 0."
 
 msgid "Illegal value for attribute ''changeset''. Got {0}."
 msgstr ""
@@ -13865,7 +13888,7 @@ msgid "Failed to create plugin directory ''{0}''"
 msgstr ""
 
 msgid "Downloading Plugin {0}..."
-msgstr ""
+msgstr "Haetaan liitännäistä {0}..."
 
 msgid "An error occurred in plugin {0}"
 msgstr "Virhe liitännäisessä {0}"
@@ -13978,7 +14001,7 @@ msgid "Could not load plugin {0}. Delete from preferences?"
 msgstr "Liitännäistä {0} ei voitu ladata. Poistetaanko se asetuksista?"
 
 msgid "loading plugin ''{0}'' (version {1})"
-msgstr ""
+msgstr "ladataan liitännäisen ''{0}'' versiota {1}"
 
 msgid ""
 "<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was "
@@ -13986,13 +14009,13 @@ msgid ""
 msgstr ""
 
 msgid "Loading plugins ..."
-msgstr ""
+msgstr "Ladataan liitännäisiä ..."
 
 msgid "Checking plugin preconditions..."
 msgstr "Tarkistetaan liitännäisten riippuvuuksia..."
 
 msgid "Loading plugin ''{0}''..."
-msgstr ""
+msgstr "Ladataan liitännäistä ''{0}''..."
 
 msgid "JOSM could not find information about the following plugin:"
 msgid_plural "JOSM could not find information about the following plugins:"
@@ -14161,7 +14184,7 @@ msgid "Download plugin list..."
 msgstr "Ladataan listaa liitännäisistä..."
 
 msgid "Downloading plugin list from ''{0}''"
-msgstr ""
+msgstr "Haetaan listaa liitännäisistä kohteesta ''{0}''"
 
 msgid "Plugin list download error"
 msgstr ""
@@ -15045,7 +15068,7 @@ msgid "Red:"
 msgstr ""
 
 msgid "Saturation:"
-msgstr ""
+msgstr "Värikylläisyys:"
 
 msgid "Landsat"
 msgstr ""
@@ -15342,6 +15365,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15634,6 +15660,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15820,12 +15849,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16082,6 +16117,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16117,12 +16162,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16455,6 +16498,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16522,7 +16570,7 @@ msgid ""
 msgstr ""
 
 msgid "Surface"
-msgstr ""
+msgstr "Pintamateriaali"
 
 msgid "paved"
 msgstr "päällystetty"
@@ -16570,7 +16618,7 @@ msgid "ground"
 msgstr "maa"
 
 msgid "sett"
-msgstr ""
+msgstr "nupukivi"
 
 msgid "Smoothness"
 msgstr ""
@@ -16691,7 +16739,7 @@ msgid "Lit"
 msgstr "Valaistu"
 
 msgid "Width (meters)"
-msgstr ""
+msgstr "Leveys (metriä)"
 
 msgid "Sidewalk"
 msgstr ""
@@ -16779,61 +16827,11 @@ msgstr "Operaattori"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Aukioloajat"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
-msgstr ""
+msgstr "Esteetön (pyörätuoli)"
 
 msgid "limited"
 msgstr ""
@@ -17095,7 +17093,7 @@ msgstr ""
 
 msgctxt "parking"
 msgid "surface"
-msgstr ""
+msgstr "maantasainen"
 
 msgctxt "parking"
 msgid "underground"
@@ -17811,7 +17809,7 @@ msgid ""
 msgstr ""
 
 msgid "Visibility"
-msgstr ""
+msgstr "Näkyminen"
 
 msgctxt "trail_visibility"
 msgid "excellent"
@@ -18313,7 +18311,7 @@ msgstr "Lähde"
 msgid ""
 "A point where groundwater naturally flows to the surface of the earth from "
 "underground."
-msgstr ""
+msgstr "Paikka missä pohjavesi nousee maan pinnalle itsestään."
 
 msgid "Waterfall"
 msgstr "Vesiputous"
@@ -19320,6 +19318,33 @@ msgstr "Hostelli"
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr "Suihku"
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Tarkempi kuvaus"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19431,12 +19456,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr "Yökerho"
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turismi"
 
@@ -19488,9 +19507,6 @@ msgstr "kaupunki"
 msgid "region"
 msgstr "alue"
 
-msgid "Closer Description"
-msgstr "Tarkempi kuvaus"
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -19612,12 +19628,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr "Ratsastustoimintaa"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Leikkipuisto"
 
@@ -19649,6 +19659,18 @@ msgstr "Kalastus"
 msgid "Private Swimming Pool"
 msgstr "Yksityinen uima-allas"
 
+msgid "Night Club"
+msgstr "Yökerho"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19956,10 +19978,16 @@ msgstr "Eläinlääkäri"
 msgid "Toilets/Restrooms"
 msgstr "WC"
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19989,24 +20017,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr "Suihku"
-
 msgid "Post Box"
 msgstr "Postilaatikko"
 
 msgid "Collection times"
 msgstr "Tyhjennysajat"
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20095,7 +20111,7 @@ msgid "ground"
 msgstr ""
 
 msgid "Visibility/readability"
-msgstr ""
+msgstr "Näkyvyysalue"
 
 msgid "house (up to 5m)"
 msgstr ""
@@ -20300,6 +20316,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20987,9 +21021,6 @@ msgstr "Majakka"
 msgid "Street Lamp"
 msgstr "Katulyhty"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22125,10 +22156,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -22155,10 +22183,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -22185,6 +22216,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -22200,6 +22234,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23746,13 +23783,13 @@ msgid "''wikipedia''=''language:page title''"
 msgstr ""
 
 msgid "Hide icons at low zoom"
-msgstr ""
+msgstr "Piilota kuvakkeet näytettäessä suuri alue"
 
 msgid "Less obtrusive node symbols at low zoom"
-msgstr ""
+msgstr "Häivytä pisteet asteittain näkyvistä tarkennettaessa kauemmas"
 
 msgid "Display street labels (at high zoom)"
-msgstr ""
+msgstr "Näytä katujen nimet (lähelle tarkennettaessa)"
 
 msgid "Use alternative turn restriction icon set"
 msgstr ""
@@ -23926,9 +23963,10 @@ msgstr "Lähetä jäljet"
 
 msgid "Defines the visibility of your trace for other OSM users."
 msgstr ""
+"Määrittää lähettävästä GPS-jäljestä muille käyttäjille paljastettavat tiedot."
 
 msgid "http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces"
-msgstr ""
+msgstr "http://wiki.openstreetmap.org/wiki/Fi:GPS-jälkien julkisuus"
 
 msgid "(What does that mean?)"
 msgstr ""
@@ -24078,7 +24116,7 @@ msgid "Save settings"
 msgstr ""
 
 msgid "Can not read settings"
-msgstr ""
+msgstr "Asetusten lukeminen ei onnistunut"
 
 msgid "Q=Options, Enter=save, Ctrl-Enter=save with tags, Up/Down=tune"
 msgstr ""
@@ -24140,9 +24178,6 @@ msgstr "Etsii ja korjaa osoitteita, joista puuttuu katu"
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24438,9 +24473,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24919,6 +24951,8 @@ msgstr ""
 msgid ""
 "Use hue and saturation instead of RGB distinction to select matching colors."
 msgstr ""
+"Käytä täsmäävien värien valintaan värisävyä ja värikylläisyyttä, RGB-"
+"erotuksen sijasta"
 
 msgid "How often thinning operation should be applied (Default {0})."
 msgstr ""
@@ -24954,7 +24988,7 @@ msgid "Rotate crosshair"
 msgstr "Kierrä ristiosoitinta"
 
 msgid "Advanced settings"
-msgstr ""
+msgstr "Lisäasetukset"
 
 msgid "Buildings tags:"
 msgstr ""
@@ -25103,13 +25137,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25124,6 +25151,9 @@ msgid ""
 "the current projection to one of the cadastre\n"
 "projections and retry"
 msgstr ""
+"Käyttääksesi cadastre WMS -liitännäistä, vaihda\n"
+"karttaprojektio joksikin cadastren projektioista\n"
+"ja yritä uudelleen"
 
 msgid "Change the current projection"
 msgstr ""
@@ -25416,7 +25446,7 @@ msgid "Load location from cache (only if cache is enabled)"
 msgstr ""
 
 msgid "{0} not allowed with the current projection"
-msgstr ""
+msgstr "{0} ei ole sallittu nykyisellä karttaprojektiolla"
 
 msgid ""
 "Cannot load cache {0} which is not compatible with current projection zone"
@@ -25740,6 +25770,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26202,12 +26308,14 @@ msgid "Maximum incline the vehicle can go down"
 msgstr "Suurin jyrkkyys alamäelle, jota ajoneuvo voi käyttää"
 
 msgid "Surface blacklist"
-msgstr ""
+msgstr "Estetyt pintamateriaalit"
 
 msgid ""
 "List of surfaces the vehicle cannot use, values are separated by semicolons "
 "(;)"
 msgstr ""
+"Lista pintamateriaaleista, joita pitkin ajoneuvo ei voi kulkea. Arvot "
+"erotetaan puolipisteellä (;)"
 
 msgid "max. tracktype grade"
 msgstr ""
@@ -26360,6 +26468,8 @@ msgid ""
 "Surface values must not contain any of the following characters: '','', '' "
 "'{' '',  '' '}' '', ''='', ''|''"
 msgstr ""
+"Pintamateriaalin arvo ei voi sisältää näitä merkkejä: '','', '' '{' '',  '' "
+"'}' '', ''='', ''|''"
 
 msgid "Imagery XML Files"
 msgstr ""
@@ -27197,12 +27307,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27218,6 +27334,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28127,7 +28246,7 @@ msgid "Bind to coordinates"
 msgstr ""
 
 msgid "Projection:"
-msgstr ""
+msgstr "Projektio:"
 
 msgid "Bottom left (min) corner:"
 msgstr ""
@@ -28142,13 +28261,13 @@ msgid "Top right (max) corner:"
 msgstr ""
 
 msgid "Projection Preferences"
-msgstr ""
+msgstr "Karttaprojektion asetukset"
 
 msgid "Close the dialog and apply projection preferences"
-msgstr ""
+msgstr "Sulje ikkuna ja ota karttaprojektioasetukset käyttöön"
 
 msgid "Close the dialog, discard projection preference changes"
-msgstr ""
+msgstr "Sulje ikkuna ja hylkää muutokset karttaprojektioon"
 
 msgid "Loading..."
 msgstr ""
@@ -28214,7 +28333,7 @@ msgid "Finalizing layers"
 msgstr ""
 
 msgid "Please set a projection."
-msgstr ""
+msgstr "Ole hyvä ja valitse karttaprojektio."
 
 msgid "Could not parse numbers. Please check."
 msgstr ""
@@ -29700,6 +29819,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Pistettä ei voi sijoittaa maailman ulkopuolelle."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
@@ -29952,7 +30127,7 @@ msgid "OSM Signature Files"
 msgstr ""
 
 msgid "Only digits allowed in osmid: ''{0}''."
-msgstr ""
+msgstr "Vain numerot sallittuja osmid:ssä: ''{0}''."
 
 msgid "Could not parse OpenPGP message."
 msgstr ""
@@ -30704,7 +30879,7 @@ msgstr ""
 
 msgid ""
 "Paste relation membership from objects in the buffer onto selected object(s)"
-msgstr ""
+msgstr "Liitä valituille kohteille relaatiojäsenyydet leikepöydän kohteilta"
 
 msgid "Split Object"
 msgstr "Jaa elementti"
diff --git a/i18n/po/fil.po b/i18n/po/fil.po
index ad4d0de..7e64951 100644
--- a/i18n/po/fil.po
+++ b/i18n/po/fil.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-06-19 14:15+0000\n"
 "Last-Translator: Anthony Balico <Unknown>\n"
 "Language-Team: Filipino <fil at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:10+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:06+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: fil\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/fo.po b/i18n/po/fo.po
index abbaa9c..3bb14bb 100644
--- a/i18n/po/fo.po
+++ b/i18n/po/fo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-02-28 16:15+0000\n"
 "Last-Translator: LiFo <Unknown>\n"
 "Language-Team: Faroese <fo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:40+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:39+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr "{0}: valmøguleiki ''{1}'' er tvítýddur"
@@ -1362,6 +1362,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2080,17 +2089,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2502,6 +2505,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2523,6 +2532,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4358,9 +4375,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7850,9 +7864,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8749,6 +8760,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8848,6 +8862,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10778,9 +10799,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11849,34 +11867,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11907,52 +11943,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12299,10 +12317,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14449,6 +14463,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14741,6 +14758,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14927,12 +14947,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15187,6 +15213,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15220,12 +15256,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15532,6 +15566,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15847,59 +15886,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18386,6 +18375,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18497,12 +18513,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18554,9 +18564,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18678,12 +18685,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18715,6 +18716,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19022,10 +19035,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19055,24 +19074,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19366,6 +19373,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20053,9 +20078,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21191,10 +21213,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21221,10 +21240,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21251,6 +21273,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21266,6 +21291,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23182,9 +23210,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23478,9 +23503,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24135,13 +24157,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24767,6 +24782,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26200,12 +26291,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26221,6 +26318,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28680,6 +28780,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/fr.po b/i18n/po/fr.po
index dc23915..365d5d7 100644
--- a/i18n/po/fr.po
+++ b/i18n/po/fr.po
@@ -5,16 +5,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-09 15:38+0000\n"
-"Last-Translator: Syl <Unknown>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-29 07:28+0000\n"
+"Last-Translator: the_knife <pierre.yves.berrard at gmail.com>\n"
 "Language-Team: Fr <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:41+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:40+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: fr\n"
 "X-Poedit-Bookmarks: 1767,-1,-1,2669,-1,-1,-1,-1,-1,-1\n"
 
@@ -1483,6 +1483,15 @@ msgstr[1] ""
 "Plusieurs chemins utilisent les nœuds sélectionnés. Veuillez aussi "
 "sélectionner le chemin."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Which way segment should reuse the history of {0}?"
+
+msgid " [id: {0}]"
+msgstr " [identifiant : {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segment {0} : {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Vous devez sélectionner deux nœuds ou plus pour couper un chemin fermé."
@@ -2272,17 +2281,11 @@ msgstr ""
 "Cliquez pour déplacer le nœud en surbrillance. Maintenez Ctrl enfoncée pour "
 "ajouter de nouveaux nœuds, ou Alt pour le supprimer."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Impossible de placer un nœud hors du monde."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Ajout d’un nouveau noeud au chemin"
 msgstr[1] "Ajout d’un nouveau jeu aux {0} chemins"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Impossible de supprimer un nœud référencé par plusieurs objets"
-
 msgid "Cannot delete node that has tags"
 msgstr "Impossible de supprimer un nœud doté d’attributs"
 
@@ -2543,13 +2546,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Inclure les objects incomplets et effacés dans la recherche."
 
 msgid "standard"
-msgstr ""
+msgstr "standard"
 
 msgid "regular expression"
 msgstr "Expression régulière"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "Sélecteur MapCSS"
 
 msgid "add toolbar button"
 msgstr "Bouton de la barre d’outils"
@@ -2727,6 +2730,12 @@ msgstr "tous les enfants d’objets correspondant à l’expression"
 msgid "all parents of objects matching the expression"
 msgstr "tous les parents d’objets correspondant à l’expression"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relation contenant un membre avec le rôle <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objets appartenant à une relation avec le rôle <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ième membre de la relation ou n-ième nœud du chemin"
 
@@ -2752,6 +2761,14 @@ msgstr ""
 "objets (et tous ses nœuds de chemins / membres de relation) dans la zone "
 "téléchargée"
 
+msgid "Searching"
+msgstr "Recherche en cours"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Recherche parmi {0} objet"
+msgstr[1] "Recherche parmi {0} objets"
+
 msgid "No match found for ''{0}''"
 msgstr "Aucun résultat n’a été trouvé pour ''{0}''"
 
@@ -2838,7 +2855,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Jeton inattendu. Attendu {0}, trouvé {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Échec dans l''analyse du sélecteur MapCSS"
 
 msgid "Unexpected token: {0}"
 msgstr "Jeton inattendu : {0}"
@@ -4757,9 +4774,6 @@ msgstr "Ne plus afficher (pour cette session)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ne plus afficher"
 
-msgid " [id: {0}]"
-msgstr " [identifiant : {0}]"
-
 msgid "incomplete"
 msgstr "incomplet"
 
@@ -7591,7 +7605,7 @@ msgstr[1] "{0} différents"
 msgid ", {0} unset"
 msgid_plural ", {0} unset"
 msgstr[0] ", {0} non précisé"
-msgstr[1] ", {0} précisés"
+msgstr[1] ", {0} non précisés"
 
 msgid "Select objects for which to change tags."
 msgstr "Sélectionner les objets dont les attributs sont à changer."
@@ -7654,7 +7668,7 @@ msgid "Launch browser with wiki help for selected object"
 msgstr "Afficher le wiki d’aide"
 
 msgid "Go to Taginfo"
-msgstr "Aller à Taginfo"
+msgstr "Se rendre sur Taginfo"
 
 msgid "Launch browser with Taginfo statistics for selected object"
 msgstr ""
@@ -8580,9 +8594,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Objet"
 
-msgid "not present"
-msgstr "absente"
-
 msgid "Changeset comment"
 msgstr "Commentaire de groupe de modifications"
 
@@ -9651,6 +9662,9 @@ msgstr "Echelle de pixel: {0}"
 msgid "Best zoom: {0}"
 msgstr "Meilleur zoom : {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Taille estimée du cache : {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Statistiques du cache : {0}"
 
@@ -9752,6 +9766,17 @@ msgstr "Marqueur précédent"
 msgid "Jump to previous marker"
 msgstr "Aller au marqueur précédent"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Pour ajouter un autre calque, vous devez allouer au moins {0,number,#}Mo de "
+"mémoire à JOSM à l''aide de l''option -Xmx{0,number,#}M (cf. "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Actuellement, {1,number,#}Mo de mémoire sont alloués à JOSM."
+
 msgid "All projections are supported"
 msgstr "Toutes les projections sont supportées."
 
@@ -11892,7 +11917,7 @@ msgid "2. Enter name for this layer"
 msgstr "2. Entrer un nom pour ce calque"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "Cache {0}, taille totale : {1} octets"
 
 msgid "Cache name"
 msgstr "Nom du cache"
@@ -11924,9 +11949,6 @@ msgstr "Répertoire du cache : "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Taille maximale du cache sur le disque (par imagerie) en Mo : "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Nombre maximal d''objets en mémoire cache : "
-
 msgid "Tiles zoom offset:"
 msgstr "Décalage du zoom des tuiles :"
 
@@ -13066,10 +13088,13 @@ msgstr "Nouvelle relation"
 msgid ""
 "The preset <i>{0}</i> cannot be applied since nothing has been selected!"
 msgstr ""
+"Le modèle <i>{0}</i> ne peut être appliqué car rien n''a été sélectionné !"
 
 msgid ""
 "The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 msgstr ""
+"Le modèle <i>{0}</i> ne peut être appliqué car la sélection est "
+"incompatible !"
 
 msgid "Change {0} object"
 msgid_plural "Change {0} objects"
@@ -13088,35 +13113,53 @@ msgstr "Modifier les attributs"
 msgid "Add or remove toolbar button"
 msgstr "Ajouter ou enlever le bouton de la barre d’outils"
 
-msgid "Unknown requisite: {0}"
-msgstr "Prérequis inconnu : {0}"
+msgid "Unknown type: {0}"
+msgstr "Type inconnu : {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Expression de membre illégale : {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Groupe d’attributs {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Plus d’infos…"
+msgid "Preset group {0}"
+msgstr "Groupe d’attributs {0}"
 
-msgid "Available roles"
-msgstr "Rôle disponible"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Référence {0} utilisée avant d’être définie"
 
-msgid "role"
-msgstr "Rôle"
+msgid "Roles cannot appear more than once"
+msgstr "Le rôle ne peut pas apparaître plus d’’une fois"
 
-msgid "count"
-msgstr "Nombre"
+msgid "Preset role element without parent"
+msgstr "Élément de rôle prédéfini sans parent"
 
-msgid "elements"
-msgstr "Élément"
+msgid "Preset sub element without parent"
+msgstr "Sous élément prédéfini sans parent"
 
-msgid "Optional Attributes:"
-msgstr "Attributs facultatifs :"
+msgid "Error parsing {0}: "
+msgstr "Erreur d’analyse de {0} : "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Sélectionner une incrémentation automatique de {0} pour ce champ"
+msgid "Search preset"
+msgstr "Rechercher par attribut"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Annuler l''auto-incrément pour ce champ"
+msgid "Show preset search dialog"
+msgstr "Afficher la fenêtre de recherche par attribut"
+
+msgid "Search presets"
+msgstr "Préreglages de recherche"
+
+msgid "Presets"
+msgstr "Attributs"
+
+msgid "Search for objects by preset"
+msgstr "Rechercher des objets par attribut"
+
+msgid "Show only applicable to selection"
+msgstr "Afficher uniquement les attributs applicables à la sélection"
+
+msgid "Search in tags"
+msgstr "Rechercher dans les mots-clés"
+
+msgid "Add toolbar button"
+msgstr "Ajouter le bouton de la barre d’outils"
 
 msgid "{0}:"
 msgstr "{0} :"
@@ -13156,53 +13199,35 @@ msgstr ""
 "Le modèle d’attributs  « {0}-{1} » n’est pas valide - « short_descriptions » "
 "doit avoir le même nombre d’éléments que « values »"
 
-msgid "Unknown type: {0}"
-msgstr "Type inconnu : {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Groupe d’attributs {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Groupe d’attributs {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Référence {0} utilisée avant d’être définie"
-
-msgid "Roles cannot appear more than once"
-msgstr "Le rôle ne peut pas apparaître plus d’’une fois"
-
-msgid "Preset role element without parent"
-msgstr "Élément de rôle prédéfini sans parent"
-
-msgid "Preset sub element without parent"
-msgstr "Sous élément prédéfini sans parent"
+msgid "More information about this feature"
+msgstr "Plus d’infos…"
 
-msgid "Error parsing {0}: "
-msgstr "Erreur d’analyse de {0} : "
+msgid "Optional Attributes:"
+msgstr "Attributs facultatifs :"
 
-msgid "Search preset"
-msgstr "Rechercher par attribut"
+msgid "Unknown requisite: {0}"
+msgstr "Prérequis inconnu : {0}"
 
-msgid "Show preset search dialog"
-msgstr "Afficher la fenêtre de recherche par attribut"
+msgid "Illegal member expression: {0}"
+msgstr "Expression de membre illégale : {0}"
 
-msgid "Search presets"
-msgstr "Préreglages de recherche"
+msgid "Available roles"
+msgstr "Rôle disponible"
 
-msgid "Presets"
-msgstr "Attributs"
+msgid "role"
+msgstr "Rôle"
 
-msgid "Search for objects by preset"
-msgstr "Rechercher des objets par attribut"
+msgid "count"
+msgstr "Nombre"
 
-msgid "Show only applicable to selection"
-msgstr "Afficher uniquement les attributs applicables à la sélection"
+msgid "elements"
+msgstr "Élément"
 
-msgid "Search in tags"
-msgstr "Rechercher dans les mots-clés"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Sélectionner une incrémentation automatique de {0} pour ce champ"
 
-msgid "Add toolbar button"
-msgstr "Ajouter le bouton de la barre d’outils"
+msgid "Cancel auto-increment for this field"
+msgstr "Annuler l''auto-incrément pour ce champ"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13219,6 +13244,8 @@ msgstr "Certains des auditeurs principaux ont oublié de se retirer : {0}"
 
 msgid "Some of the key modifier listeners forgot to remove themselves: {0}"
 msgstr ""
+"Certains <i>listeners</i> sur les modifications de clés ne se sont pas "
+"supprimés: {0}"
 
 msgid "All files (*.*)"
 msgstr "Tous les fichiers (*.*)"
@@ -13506,7 +13533,7 @@ msgid "GeoJSON Files"
 msgstr "Fichiers GeoJSON"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Fichiers GeoJSON projetés"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Calque ''{0}'' non supporté"
@@ -13618,12 +13645,6 @@ msgstr "Notification d’un message"
 msgid "{0} not available (offline mode)"
 msgstr "{0} non disponible (mode hors connexion)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Aucun objet avec l’identifiant {0} n’a été trouvé dans le jeu de données. "
-"Impossible de déduire le type de l’objet."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Récupération d’un ensemble de nœuds depuis ''{0}''"
 
@@ -14212,7 +14233,7 @@ msgstr ""
 "Impossible de démarrer le contrôle à distance en IPv6 sur le port {0}: {1}"
 
 msgid "RemoteControl::Accepting remote connections on {0}:{1}"
-msgstr ""
+msgstr "RemoteControl::Accepte les connexions à distance vers {0}:{1}"
 
 msgid "RemoteControl::Server {0}:{1} stopped."
 msgstr "RemoteControl::Server {0}:{1} s''est arrêté."
@@ -15508,15 +15529,15 @@ msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
 msgstr ""
-"Erreur dans l’’expression de recherche à la position {0} - la partie droite "
-"de l’’expression or(|) doit retourner un jeu d'objets"
+"Erreur dans l’expression de recherche à la position {0} - la partie droite "
+"de l’expression or(|) doit retourner un jeu d’objets"
 
 msgid ""
 "Error in search expression on position {0} - left side of or(|) expression "
 "must return set of primitives"
 msgstr ""
-"Erreur dans l’’expression de recherche à la position {0} - la partie gauche "
-"de l’’expression or(|) doit retourner un jeu d'objets"
+"Erreur dans l’expression de recherche à la position {0} - la partie gauche "
+"de l’expression or(|) doit retourner un jeu d’objets"
 
 msgid ""
 "Error in search expression on position {0} - not(-) cannot be used in this "
@@ -15887,7 +15908,7 @@ msgid "osmfr"
 msgstr "osmfr"
 
 msgid "OpenPT Map (overlay)"
-msgstr "OpenPT Map (revêtement)"
+msgstr "Surcouche OpenPT Map"
 
 msgid "Strava cycling heatmap"
 msgstr "Carte de chaleur élo de Strava"
@@ -15896,7 +15917,7 @@ msgid "Strava running heatmap"
 msgstr "Carte de chaleur piéton de Strava"
 
 msgid "Locator Overlay"
-msgstr ""
+msgstr "Surcouche Localisation"
 
 msgid "QA No Address"
 msgstr ""
@@ -15923,10 +15944,10 @@ msgid "OSM Inspector: Geometry"
 msgstr "OSM Inspector : Géométrie"
 
 msgid "OSM Inspector: Tagging"
-msgstr ""
+msgstr "OSM Inspector: Attributs"
 
 msgid "OSM Inspector: Places"
-msgstr ""
+msgstr "OSM Inspector: Lieux"
 
 msgid "OSM Inspector: Highways"
 msgstr "OSM Inspector : Routes"
@@ -15947,7 +15968,7 @@ msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI noir et blanc 2.5 m"
 
 msgid "Geoimage.at MaxRes"
-msgstr ""
+msgstr "Geoimage.at Haute Résolution"
 
 msgid "basemap.at"
 msgstr "basemap.at"
@@ -15994,13 +16015,13 @@ msgstr ""
 "Imagerie aérienne AGIV(Landers), couvre aussi la région de Bruxelles (2013)"
 
 msgid "SPW(allonie) PICC numerical imagery"
-msgstr ""
+msgstr "Imagerie numérique SPW(allonie) PICC"
 
 msgid "SPW(allonie) 2012 aerial imagery"
-msgstr ""
+msgstr "SPW(allonie) 2012 photos aériennes"
 
 msgid "SPW(allonie) 2009 aerial imagery"
-msgstr ""
+msgstr "SPW(allonie) 2009 photos aériennes"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
 msgstr ""
@@ -16028,7 +16049,7 @@ msgid "Kelowna 2012"
 msgstr "Kelowna 2012"
 
 msgid "Kelowna Roads overlay"
-msgstr ""
+msgstr "Surcouche Routes Kelowna"
 
 msgid "Czech CUZK:KM"
 msgstr "République tchèque CUZK:KM"
@@ -16046,13 +16067,13 @@ msgid "Geodatastyrelsen (Denmark)"
 msgstr "Geodatastyrelsen (Danemark)"
 
 msgid "Geodatastyrelsen DTK Kort25"
-msgstr ""
+msgstr "Geodatastyrelsen DTK Kort25"
 
 msgid "Geodatastyrelsen Skyggekort 1.6m"
-msgstr ""
+msgstr "Geodatastyrelsen Skyggekort 1.6m"
 
 msgid "Geodatastyrelsen Skærmkort"
-msgstr ""
+msgstr "Geodatastyrelsen Skærmkort"
 
 msgid "Stevns (Denmark)"
 msgstr "Stevns (Danemark)"
@@ -16067,7 +16088,7 @@ msgid "Estonia Ortho (Maaamet)"
 msgstr "Ortho estonienne (Maaamet)"
 
 msgid "Estonia Hillshade (Maaamet)"
-msgstr ""
+msgstr "Estonia Hillshade (Maaamet)"
 
 msgid "Estonia Cadastre (Maaamet)"
 msgstr "Cadastre estonien (Maaamet)"
@@ -16135,6 +16156,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16190,6 +16214,8 @@ msgid ""
 "Physical DE:Harz - Overlay für Bing (z.B. Deckkraft zw. 20 und 50 Prozent "
 "nutzen)"
 msgstr ""
+"Physical DE:Harz - Overlay für Bing (z.B. Deckkraft zw. 20 und 50 Prozent "
+"nutzen)"
 
 msgid "Maps4BW (LGL-BW, www.lgl-bw.de)"
 msgstr "Maps4BW (LGL-BW, www.lgl-bw.de)"
@@ -16431,6 +16457,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (image aérienne)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (chemins)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16582,7 +16611,7 @@ msgid "USGS Large Scale Imagery"
 msgstr ""
 
 msgid "TIGER 2012 Roads Overlay"
-msgstr ""
+msgstr "Surcouche routes TIGER 2012"
 
 msgid "New & Misaligned TIGER Roads (2015)"
 msgstr ""
@@ -16617,12 +16646,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1res Séries 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7e Séries 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historique (OSM-Best)"
 
@@ -16885,10 +16920,23 @@ msgstr ""
 "d’un point donné."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
 msgstr ""
+"Autorise la sélection de zones d''un calque et la création automatique "
+"d''une route comme polygone. Conçu pour une modélisation facile des "
+"bâtiments à partir de calques en arrière-plan. Optimisé pour basemap.at."
 
 msgid "Tools for drawing buildings."
 msgstr "Outils pour dessiner des bâtiments."
@@ -16900,9 +16948,9 @@ msgid ""
 "Overlays the canvec tile grid on the map and prints URL''s to the .zip "
 "files. Future goals: allow auto-downloading and loading of canvec .osm files"
 msgstr ""
-"Superpose la grille de tuiles canvec sur la carte et marque les URL'' dans "
-"les fichiers zip. Objectifs futurs: permettre le téléchargement automatique "
-"et le chargement des fichiers canvec .osm."
+"Superpose les tuiles canvec sur la carte et écrit les URLs dans les fichiers "
+"zip. Objectifs futurs : permettre le téléchargement automatique et le "
+"chargement des fichiers canvec .osm."
 
 msgid ""
 "Allows the user to create different color schemes and to switch between "
@@ -16930,17 +16978,12 @@ msgstr ""
 "Implémente une ligne de commande et permet la création de commandes "
 "personnalisées. Voir le lien pour les commandes standard (arc, circle etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Fournit la bibliothèque de fonctions communes pour la gestion d’images. Ne "
-"devrait pas être installé directement par les utilisateurs, mais comme "
-"dépendances d’autres greffons."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Attention : expérimental !) Outil d’assemblage de données."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Crée un réseau de chemins."
 
@@ -17188,6 +17231,9 @@ msgid ""
 "Recommends categories/tags on newly created OSM entities by analysing "
 "spatial entities into training features and using SVM classification"
 msgstr ""
+"Recommande des catégories ou des attributs sur les nouvelles entités OSM en "
+"analysant lesdites entités comme des unités d''apprentissage et en utilisant "
+"la classification SVM"
 
 msgid "Import/export OSM data in PBF format"
 msgstr "Importer/exporter les données OSM dans le format PBF."
@@ -17238,6 +17284,7 @@ msgstr ""
 
 msgid "Displays stops of selected public transport routes as graph"
 msgstr ""
+"Affiche sur un graphe les arrêts des lignes de transport public sélectionnées"
 
 msgid ""
 "The RasterFiltersPlugin allows to choose and apply some images'' filters to "
@@ -17278,10 +17325,10 @@ msgid "Loads data from SDS"
 msgstr "Charge des données depuis SDS"
 
 msgid "Imagery Layer for Sea Charts"
-msgstr ""
+msgstr "Calque d''imagerie pour les cartes nautiques"
 
 msgid "Edit features for Sea Charts"
-msgstr ""
+msgstr "Éditer les fonctionnalités des cartes nautiques"
 
 msgid ""
 "Simplify area by removing nodes on very obtuse angles. This can be "
@@ -17330,6 +17377,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Créer des maisons mitoyennes depuis des blocs entiers."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Intégrer à JOSM le correctif http://osmlab.github.io/to-fix/ pour corriger "
+"les erreurs dans OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17666,61 +17720,9 @@ msgstr "Société"
 msgid "Service Times"
 msgstr "Horaires de service"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horaires d’ouverture"
 
-msgid "24/7"
-msgstr "24h/24 7j/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Accessible aux fauteuils roulants"
 
@@ -17888,7 +17890,7 @@ msgstr "karting"
 
 msgctxt "sport"
 msgid "model_aerodrome"
-msgstr ""
+msgstr "Terrain d''aéromodélisme"
 
 msgctxt "sport"
 msgid "motocross"
@@ -18175,7 +18177,7 @@ msgid "mormon"
 msgstr "Mormone"
 
 msgid "old_catholic"
-msgstr ""
+msgstr "Catholicisme romain"
 
 msgid "orthodox"
 msgstr "Orthodoxe"
@@ -18557,7 +18559,7 @@ msgid "All vehicles"
 msgstr "Tous types de véhicules"
 
 msgid "use_sidepath"
-msgstr ""
+msgstr "Bande cyclable obligatoire"
 
 msgid "Motor vehicles"
 msgstr "Véhicules motorisés"
@@ -18986,7 +18988,7 @@ msgid "Turning Circle"
 msgstr "Rondpoint interne"
 
 msgid "Turning Loop"
-msgstr ""
+msgstr "Boucle de retournement"
 
 msgid "City Limit"
 msgstr "Limite communale"
@@ -20246,6 +20248,33 @@ msgstr "Auberge de jeunesse"
 msgid "Alpine Hut"
 msgstr "Refuge gardé"
 
+msgid "Wilderness Hut"
+msgstr "Cabane d''observation"
+
+msgid "Access rights"
+msgstr "Droits d’accès"
+
+msgid "Shower"
+msgstr "Douche"
+
+msgid "seasonal"
+msgstr "saisonnier"
+
+msgid "Reservation"
+msgstr "Réservation"
+
+msgid "required"
+msgstr "obligatoire"
+
+msgid "recommended"
+msgstr "Recommandée"
+
+msgid "members_only"
+msgstr "Réservé aux membres"
+
+msgid "Closer Description"
+msgstr "Description"
+
 msgid "Caravan Site/RV Park"
 msgstr "Aire de service et/ou stationnement pour camping-car"
 
@@ -20357,12 +20386,6 @@ msgstr "Biergarten"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Boîte de nuit"
-
-msgid "Strip Club"
-msgstr "Club de strip-tease"
-
 msgid "Tourism"
 msgstr "Tourisme"
 
@@ -20416,9 +20439,6 @@ msgstr "ville"
 msgid "region"
 msgstr "région"
 
-msgid "Closer Description"
-msgstr "Description"
-
 msgid "Routes shown for:"
 msgstr "Itinéraires affichés :"
 
@@ -20543,12 +20563,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Équitation"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Bordel"
-
 msgid "Playground"
 msgstr "Terrain de jeux"
 
@@ -20580,6 +20594,18 @@ msgstr "Pêche"
 msgid "Private Swimming Pool"
 msgstr "Piscine privée"
 
+msgid "Night Club"
+msgstr "Boîte de nuit"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Club de strip-tease"
+
+msgid "Brothel"
+msgstr "Bordel"
+
 msgid "Culture"
 msgstr "Culture"
 
@@ -20887,11 +20913,17 @@ msgstr "Cabinet vétérinaire"
 msgid "Toilets/Restrooms"
 msgstr "Toilettes"
 
-msgid "Access rights"
-msgstr "Droits d’accès"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Dames"
 
-msgid "seasonal"
-msgstr "saisonnier"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Messieurs"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisexe"
 
 msgid "flush"
 msgstr "chasse dʼeau"
@@ -20920,27 +20952,15 @@ msgstr "accroupis"
 msgid "urinal"
 msgstr "urinoir"
 
-msgid "Shower"
-msgstr "Douche"
-
 msgid "Post Box"
 msgstr "Boîte aux lettres"
 
 msgid "Collection times"
 msgstr "Heures de collecte"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "colonne"
 
 msgctxt "post_box"
 msgid "lamp"
@@ -20948,11 +20968,11 @@ msgstr ""
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "mural"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "mètre"
 
 msgid "Drive through"
 msgstr "Drive"
@@ -21110,10 +21130,10 @@ msgid "Sanitary Dump Station"
 msgstr "Station de vidange de toilettes"
 
 msgid "Suction pumpout"
-msgstr ""
+msgstr "Vidange par suçion"
 
 msgid "Gravity drain for hose"
-msgstr ""
+msgstr "Vidange gravitaire"
 
 msgid "Casette or Elsan Disposal"
 msgstr ""
@@ -21231,6 +21251,24 @@ msgstr "aspirante"
 msgid "Count"
 msgstr "Quantité"
 
+msgid "Compressed Air"
+msgstr "Air comprimé"
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Colonne Morris"
 
@@ -21623,7 +21661,7 @@ msgstr "hangar"
 
 msgctxt "building"
 msgid "storage_tank"
-msgstr ""
+msgstr "réservoir de stockage"
 
 msgctxt "building"
 msgid "supermarket"
@@ -21631,7 +21669,7 @@ msgstr "supermarché"
 
 msgctxt "building"
 msgid "gasometer"
-msgstr ""
+msgstr "gazomètre"
 
 msgctxt "building"
 msgid "cowshed"
@@ -21688,7 +21726,7 @@ msgid "Skipped Levels"
 msgstr "Etages non comptabilisés"
 
 msgid "Skipped height (meters)"
-msgstr ""
+msgstr "Hauteur ignoré (mètres)"
 
 msgid "Entrance"
 msgstr "Entrée"
@@ -21918,9 +21956,6 @@ msgstr "Phare"
 msgid "Street Lamp"
 msgstr "Lampadaire"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Lu-Ve 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Station de mesure"
 
@@ -22347,7 +22382,7 @@ msgid "kaplan_turbine"
 msgstr "turbine Kaplan"
 
 msgid "run-of-the-river / water-storage"
-msgstr ""
+msgstr "au fil de l''eau / pompage-turbinage"
 
 msgid "pelton_turbine"
 msgstr "turbine Pelton"
@@ -22506,7 +22541,7 @@ msgstr "convertisseur de tension"
 
 msgctxt "power"
 msgid "back-to-back"
-msgstr ""
+msgstr "tête-bêche"
 
 msgid "Amount of poles"
 msgstr "Quantité de pôles"
@@ -22528,7 +22563,7 @@ msgstr "Type de compensateur"
 
 msgctxt "power"
 msgid "shunt_reactor"
-msgstr ""
+msgstr "inductance de shunt"
 
 msgctxt "power"
 msgid "shunt_capacitor"
@@ -22544,7 +22579,7 @@ msgstr ""
 
 msgctxt "power"
 msgid "synchronous_condenser"
-msgstr ""
+msgstr "compensateur synchrone"
 
 msgctxt "power"
 msgid "filter"
@@ -22552,11 +22587,11 @@ msgstr "filtre"
 
 msgctxt "power"
 msgid "series_reactor"
-msgstr ""
+msgstr "inductances en série"
 
 msgctxt "power"
 msgid "series_capacitor"
-msgstr ""
+msgstr "condensateurs en série"
 
 msgid "Power rating (kvar/Mvar)"
 msgstr "Puissance (kvar/Mvar)"
@@ -22580,13 +22615,13 @@ msgid "Type of construction"
 msgstr "Type de construction"
 
 msgid "lattice"
-msgstr ""
+msgstr "treillis"
 
 msgid "tubular"
 msgstr "tubulaire"
 
 msgid "solid"
-msgstr ""
+msgstr "plein"
 
 msgid "steel"
 msgstr "acier"
@@ -22605,11 +22640,11 @@ msgstr "suspension"
 
 msgctxt "power"
 msgid "anchor"
-msgstr ""
+msgstr "hauban"
 
 msgctxt "power"
 msgid "termination"
-msgstr ""
+msgstr "terminaison"
 
 msgctxt "power"
 msgid "branch"
@@ -22617,14 +22652,14 @@ msgstr "Embranchement"
 
 msgctxt "power"
 msgid "transposing"
-msgstr ""
+msgstr "transposition"
 
 msgctxt "power"
 msgid "crossing"
-msgstr ""
+msgstr "croisement"
 
 msgid "Branch tower type"
-msgstr ""
+msgstr "À branches"
 
 msgctxt "power"
 msgid "tap"
@@ -22632,7 +22667,7 @@ msgstr ""
 
 msgctxt "power"
 msgid "split"
-msgstr ""
+msgstr "partage"
 
 msgctxt "power"
 msgid "loop"
@@ -22643,7 +22678,7 @@ msgid "cross"
 msgstr "croix"
 
 msgid "Tower design"
-msgstr ""
+msgstr "Type de pylône"
 
 msgctxt "power"
 msgid "one-level"
@@ -22655,7 +22690,7 @@ msgstr "deux niveaux"
 
 msgctxt "power"
 msgid "donau"
-msgstr ""
+msgstr "danube"
 
 msgctxt "power"
 msgid "three-level"
@@ -22663,15 +22698,15 @@ msgstr "trois niveaux"
 
 msgctxt "power"
 msgid "barrel"
-msgstr ""
+msgstr "six triangles"
 
 msgctxt "power"
 msgid "asymmetric"
-msgstr ""
+msgstr "asymétrique"
 
 msgctxt "power"
 msgid "triangle"
-msgstr ""
+msgstr "triangle"
 
 msgctxt "power"
 msgid "flag"
@@ -22679,7 +22714,7 @@ msgstr ""
 
 msgctxt "power"
 msgid "donau;one-level"
-msgstr ""
+msgstr "danube;un niveau"
 
 msgctxt "power"
 msgid "four-level"
@@ -22695,27 +22730,27 @@ msgstr "neuf niveaux"
 
 msgctxt "power"
 msgid "delta"
-msgstr ""
+msgstr "delta"
 
 msgctxt "power"
 msgid "delta_two-level"
-msgstr ""
+msgstr "delta à deux niveaux"
 
 msgctxt "power"
 msgid "y-frame"
-msgstr ""
+msgstr "en Y"
 
 msgctxt "power"
 msgid "x-frame"
-msgstr ""
+msgstr "en X"
 
 msgctxt "power"
 msgid "h-frame"
-msgstr ""
+msgstr "portique"
 
 msgctxt "power"
 msgid "guyed_h-frame"
-msgstr ""
+msgstr "portique haubané"
 
 msgctxt "power"
 msgid "portal"
@@ -22723,15 +22758,15 @@ msgstr "portail"
 
 msgctxt "power"
 msgid "portal_two-level"
-msgstr ""
+msgstr "portique à deux niveaux"
 
 msgctxt "power"
 msgid "portal_three-level"
-msgstr ""
+msgstr "portique à trois niveaux"
 
 msgctxt "power"
 msgid "guyed_v-frame"
-msgstr ""
+msgstr "haubanné en X"
 
 msgctxt "power"
 msgid "bipole"
@@ -22739,10 +22774,10 @@ msgstr "bipole"
 
 msgctxt "power"
 msgid "monopolar"
-msgstr ""
+msgstr "monopolaire"
 
 msgid "Triple tower"
-msgstr ""
+msgstr "triple à un triangle"
 
 msgid "Incomplete tower"
 msgstr "Tour incomplète"
@@ -22754,7 +22789,7 @@ msgid "Pole"
 msgstr "Pylône basse-tension"
 
 msgid "Pole with Transformer"
-msgstr "Pylône avec transformateur"
+msgstr "Poteau avec transformateur"
 
 msgid "Pole Attributes:"
 msgstr "Attributs du pylône"
@@ -22791,19 +22826,19 @@ msgstr "triple"
 
 msgctxt "power"
 msgid "quad"
-msgstr ""
+msgstr "quadruple"
 
 msgctxt "power"
 msgid "fivefold"
-msgstr ""
+msgstr "quintuple"
 
 msgctxt "power"
 msgid "sixfold"
-msgstr ""
+msgstr "sextuple"
 
 msgctxt "power"
 msgid "eightfold"
-msgstr ""
+msgstr "octuple"
 
 msgid "Used for data communications"
 msgstr "Utilisé pour la communication de données"
@@ -22890,7 +22925,7 @@ msgstr "Lieu de culte"
 
 msgctxt "building"
 msgid "wayside_shrine"
-msgstr ""
+msgstr "Bildstock"
 
 msgid "Boundary Stone"
 msgstr "Pierre frontalière"
@@ -23063,11 +23098,8 @@ msgstr "Kiosque à journaux"
 msgid "Ticket"
 msgstr "Ticket"
 
-msgid "Department Store"
-msgstr "Grand magasin"
-
-msgid "Mall"
-msgstr "Centre commercial"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Droguerie"
@@ -23093,12 +23125,15 @@ msgstr "Matériel médical"
 msgid "Jewellery"
 msgstr "Bijouterie"
 
-msgid "Gift/Souvenir"
-msgstr "Cadeaux/Souvenir"
-
 msgid "Erotic"
 msgstr "Érotique"
 
+msgid "Department Store"
+msgstr "Grand magasin"
+
+msgid "Mall"
+msgstr "Centre commercial"
+
 msgid "Florist"
 msgstr "Fleuriste"
 
@@ -23123,6 +23158,9 @@ msgstr "Instruments de musique"
 msgid "Toys"
 msgstr "Jouets"
 
+msgid "Gift/Souvenir"
+msgstr "Cadeaux/Souvenir"
+
 msgid "Variety Store"
 msgstr "Divers"
 
@@ -23138,6 +23176,9 @@ msgstr "Bagagerie"
 msgid "Pet"
 msgstr "Animaux"
 
+msgid "Photo"
+msgstr "Photographie"
+
 msgid "Funeral Directors"
 msgstr "Pompes funèbres"
 
@@ -23241,7 +23282,7 @@ msgid "Diners Club"
 msgstr "Diners Club"
 
 msgid "Discover Card"
-msgstr ""
+msgstr "Carte Discover"
 
 msgid "JCB"
 msgstr "JCB"
@@ -23343,7 +23384,7 @@ msgid "Protected Area"
 msgstr "Aire protégée"
 
 msgid "Protect Class"
-msgstr ""
+msgstr "Niveau de protection"
 
 msgid "Title or type of protection"
 msgstr "Titre ou type de protection"
@@ -23588,6 +23629,8 @@ msgid ""
 "Bare upper lying uncultivated land principally covered with grass and often "
 "grazed."
 msgstr ""
+"Hauteurs dénuées et incultes couvertes principalement d''herbacées, souvent "
+"érodées."
 
 msgid "Scrub"
 msgstr "Broussailles"
@@ -23595,6 +23638,8 @@ msgstr "Broussailles"
 msgid ""
 "Bare lower lying uncultivated land with bushes but little or no tree cover."
 msgstr ""
+"Terrain inculte de faible altitude, couvert de buissons mais sans couverture "
+"arborée ou presque"
 
 msgid "Heath"
 msgstr "Lande"
@@ -23604,6 +23649,8 @@ msgid ""
 "free-draining infertile, acidic soils, and is characterised by open, low-"
 "growing woody vegetation."
 msgstr ""
+"Terrains de basse altitude incultes type lande, principalement des terres "
+"acides et drainantes couvertes de sous-arbrisseaux"
 
 msgid "Sand"
 msgstr "Sable"
@@ -23640,6 +23687,8 @@ msgid ""
 "A single notable free-standing rock, which may differ from the composition "
 "of the terrain it lies in."
 msgstr ""
+"Une pierre isolée, remarquable et sans support, manifestement d''une autre "
+"matière que le sol environnant."
 
 msgid "Land use"
 msgstr "Terrain"
@@ -24007,7 +24056,7 @@ msgstr ""
 
 msgctxt "note=*, fixme=*, description=*"
 msgid "Similar but different tags:"
-msgstr ""
+msgstr "Tags similaires quoique différents :"
 
 msgctxt "the tag note=*"
 msgid "Note"
@@ -24220,7 +24269,7 @@ msgid "variant segment"
 msgstr "variante"
 
 msgid "entry points"
-msgstr ""
+msgstr "points d''entrée"
 
 msgid "Ski Route"
 msgstr "Itinéraire de ski"
@@ -24235,7 +24284,7 @@ msgid "Destination"
 msgstr "Destination"
 
 msgid "Ref of the way this is a detour to"
-msgstr ""
+msgstr "Référence du chemin dont ceci est un détour"
 
 msgid "fork node for alternative routes"
 msgstr ""
@@ -24418,7 +24467,7 @@ msgid "{0} together with addr:*"
 msgstr "{0} en combinaison avec addr:*"
 
 msgid "{0} together with {1} and conflicting values"
-msgstr ""
+msgstr "{0} avec {1} et valeurs conflictuelles"
 
 msgid "{0} on suspicious object"
 msgstr "{0} sur un objet suspicieux"
@@ -24433,7 +24482,7 @@ msgid "natural water used for swimming pool"
 msgstr "Eau naturelle utilisée pour une piscine"
 
 msgid "sport without physical feature"
-msgstr ""
+msgstr "sport sans équipements"
 
 msgid "{0} should be on the node where {1} and {2} intersect"
 msgstr "{0} devrait être sur le nœud où {1} et {2} se croisent"
@@ -24442,7 +24491,7 @@ msgid "alternative name without {0}"
 msgstr "nom alternatif sans {0}"
 
 msgid "incomplete usage of {0} on a way without {1}"
-msgstr ""
+msgstr "usage partiel de {0} sur un chemin sans {1}"
 
 msgid "Same value of {0} and {1}"
 msgstr "Même valeur pour {0} et {1}"
@@ -24451,10 +24500,10 @@ msgid "Same value of {0}, {1} and {2}"
 msgstr "Même valeur pour {0}, {1} et {2}"
 
 msgid "{0} and {1} together with {2} and conflicting values"
-msgstr ""
+msgstr "{0} et {1} tous deux avec {2} et valeurs conflictuelles"
 
 msgid "Suspicious tag combination: {0} and {1}"
-msgstr ""
+msgstr "Combinaison suspecte de tags : {0} et {1}"
 
 msgid "{0}={1} is deprecated"
 msgstr "{0}={1} est obsolète"
@@ -24478,7 +24527,7 @@ msgid ""
 "{0}={1} is unspecific. Instead of ''{1}'' please give more information about "
 "what exactly should be fixed."
 msgstr ""
-"{0}={1} est vague. A la place de ''{1}'' veuillez indiquer précisément ce "
+"{0}={1} est vague. À la place de ''{1}'', veuillez indiquer précisément ce "
 "qui doit être corrigé ou amélioré."
 
 msgid "{0}={1} is deprecated. Please use instead a multipolygon."
@@ -24529,7 +24578,7 @@ msgid "key with uncommon character"
 msgstr "touche avec un caractère non usuel"
 
 msgid "uncommon short key"
-msgstr ""
+msgstr "clé courte peu commune"
 
 msgid "{0} is inaccurate"
 msgstr "{0} est imprécis"
@@ -24713,7 +24762,7 @@ msgid "Hide icons at low zoom"
 msgstr "Cacher les icônes à un faible zoom"
 
 msgid "Less obtrusive node symbols at low zoom"
-msgstr ""
+msgstr "Symboles de nœuds moins encombrants à fort grossissement"
 
 msgid "Display street labels (at high zoom)"
 msgstr "Afficher les étiquettes de rues (à zoom élevé)"
@@ -24729,7 +24778,7 @@ msgid "Importing CSV file ''%s''..."
 msgstr "Import du fichier CSV ''%s''..."
 
 msgid "Markers of "
-msgstr ""
+msgstr "Marqueurs de "
 
 msgid "Show summary after import"
 msgstr "Afficher un résumé après l’importation"
@@ -25128,9 +25177,6 @@ msgstr "Trouver et corriger les adresses sans rues valides"
 msgid "Address Edit"
 msgstr "Modifier l’adresse"
 
-msgid "Searching"
-msgstr "Recherche en cours"
-
 msgid "Guess values for "
 msgstr "Propose les valeurs pour "
 
@@ -25317,19 +25363,19 @@ msgid "NanoLog"
 msgstr "NanoLog"
 
 msgid "NanoLog of {0} entries"
-msgstr ""
+msgstr "NanoLog de {0} entrées"
 
 msgid "NanoLog of {0} lines, {1} of them with coordinates."
-msgstr ""
+msgstr "NanoLog de{0} lignes, dont {1} avec coordonnées."
 
 msgid "Correlate with GPX..."
-msgstr ""
+msgstr "Corréler avec GPX…"
 
 msgid "Put on GPX..."
-msgstr ""
+msgstr "Mettre sur GPX…"
 
 msgid "Correlate entries with GPS trace"
-msgstr ""
+msgstr "Corréler les entrées par trace GPS"
 
 msgid "Save layer..."
 msgstr "Sauvegarde du calque…"
@@ -25350,25 +25396,25 @@ msgid "OSM Recommendation"
 msgstr "Recommandation OSM"
 
 msgid "Recommend categories to your newly created instances."
-msgstr ""
+msgstr "Catégories conseillées pour les instances que vous venez de créer."
 
 msgid "Training process configuration"
-msgstr ""
+msgstr "Configuration du processus d''apprentissage"
 
 msgid "Model Settings"
-msgstr ""
+msgstr "Paramètres de modèle"
 
 msgid "Select objects or create new objects and get recommendation."
-msgstr ""
+msgstr "Sélectionner ou créer des objets pour avoir une recommandation"
 
 msgid "Add Recommendation"
-msgstr ""
+msgstr "Ajouter une recommandation"
 
 msgid "Add a recommended key/value pair to your object"
 msgstr "Ajouter un couple clé/valeur recommandé à votre objet"
 
 msgid "Train a Model"
-msgstr ""
+msgstr "Apprendre un modèle"
 
 msgid "Start the training engine!"
 msgstr "Démarrer le moteur de formation !"
@@ -25419,13 +25465,13 @@ msgid "Open OsmInspector"
 msgstr "Ouvrir OSM Inspector"
 
 msgid "OsmBugInfo"
-msgstr ""
+msgstr "OsmBugInfo"
 
 msgid "Open a OSM Inspector selection list window."
-msgstr ""
+msgstr "Ouvrir une fenêtre de liste de choix de l''inspecteur OSM"
 
 msgid "Current Selected Bug Info"
-msgstr ""
+msgstr "Informations sur le bogue sélectionné"
 
 msgid "Prev OSMI bug"
 msgstr "Bug OSMI précédent"
@@ -25433,14 +25479,11 @@ msgstr "Bug OSMI précédent"
 msgid "Next OSMI bug"
 msgstr "Bug OSMI suivant"
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
-msgstr ""
+msgstr "Bugs de l''inspecteur OSM"
 
 msgid "Selected Bug Info"
-msgstr ""
+msgstr "Informations sur le bug sélectionné"
 
 msgid "Handy Address Interpolation Functions"
 msgstr "Fonctions pratiques d’interpolation d’adresse"
@@ -25527,7 +25570,7 @@ msgid "Expected even numbers for addresses"
 msgstr "Numéro pairs attendus pour les adresses"
 
 msgid "Expected valid number for increment"
-msgstr ""
+msgstr "Nombre valide attendu pour l''incrémentation"
 
 msgid "Country code must be 2 letters"
 msgstr "Le code du pays doit contenir 2 lettres."
@@ -25690,6 +25733,8 @@ msgstr ""
 
 msgid "Ctrl-Click: select reference way segment; Alt-click: Clear selection"
 msgstr ""
+"Ctrl-clic: sélectionner le segment de référence; Alt-clic: effacer la "
+"sélection"
 
 msgid ": Align segments; Alt-click: Clear selection"
 msgstr ": Aligne les segments ; Alt-clic : Désélection"
@@ -25698,6 +25743,8 @@ msgid ""
 "Ctrl-click: select reference way segment; Click: select way segment to be "
 "aligned"
 msgstr ""
+"Ctrl-clic: sélectionner le segment de référence; clic: sélectionner le "
+"segment à aligner"
 
 msgid "Click: select way segment to be aligned; Alt-click: Clear selection"
 msgstr ""
@@ -25708,6 +25755,8 @@ msgid ""
 "Ctrl-Click: select reference way segment; Click: select way segment to be "
 "aligned"
 msgstr ""
+"Ctrl-clic: sélectionner le segment de référence; clic: sélectionner le "
+"segment à aligner"
 
 msgid ""
 "Welcome to the</span><br>\n"
@@ -25885,7 +25934,7 @@ msgid "What''s new..."
 msgstr "Quoi de neuf..."
 
 msgid "Added <b>angle preserving</b> aligning mode"
-msgstr ""
+msgstr "Ajout du mode d''alignement <b>préservation d''angle</b>"
 
 msgid "Various improvements and bugfixes"
 msgstr "Améliorations et correctifs divers"
@@ -25943,12 +25992,14 @@ msgstr "Aire de Sélection"
 
 msgid "Select an area (e.g. building) from an underlying image."
 msgstr ""
+"Sélectionner une zone, par exemple un bâtiment, à partir d''une image en "
+"arrière-plan"
 
 msgid "Area Selector"
 msgstr "Sélecteur d’aire"
 
 msgid "Created area"
-msgstr ""
+msgstr "Zone créée"
 
 msgid "Unable to detect a polygon where you clicked."
 msgstr ""
@@ -25963,6 +26014,7 @@ msgstr "Quelque chose n’a pas fonctionné !"
 
 msgid "Please file a bug report on the github project page under"
 msgstr ""
+"Veuillez créer un rapport de bug sur la page GitHub du projet à l''adresse"
 
 msgid ""
 "Let us know what you did and what happend add the following text to the bug "
@@ -26036,10 +26088,10 @@ msgstr ""
 "couleurs correspondantes."
 
 msgid "How often thinning operation should be applied (Default {0})."
-msgstr ""
+msgstr "Fréquence de l''opération d''affinage (par défaut {0})."
 
 msgid "Thinning Iterations"
-msgstr ""
+msgstr "Répétitions de l''affinage"
 
 msgid "show address dialog"
 msgstr "Afficher la fenêtre des adresses"
@@ -26054,10 +26106,10 @@ msgid "Merge nodes with existing nodes"
 msgstr "Fusionner les nœuds avec les nœuds existants"
 
 msgid "Debug"
-msgstr ""
+msgstr "Débogueur"
 
 msgid "Debugging mode will write images for each processing step."
-msgstr ""
+msgstr "Le mode débogage écrira des images à chaque étape du traitement."
 
 msgid "Street Name:"
 msgstr "Nom de la rue :"
@@ -26123,6 +26175,7 @@ msgstr ""
 
 msgid "Select both address nodes and building ways to merge"
 msgstr ""
+"Sélectionnez à la fois les nœuds d''adresse et les bâtiments à fusionner"
 
 msgid "No address nodes found in the selection"
 msgstr "Pas de nœud d’adresse trouvé dans la sélection"
@@ -26223,18 +26276,6 @@ msgid "Auto sourcing"
 msgstr "Enregistrer la source automatiquement"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Le plugin cadastre-fr utilise la touche F11 pour récupérer les données,\n"
-"elle est actuellement attribuée au mode plein écran\n"
-"La nouvelle touche pour récupérer les données est F10, mais vous pouvez "
-"changer cette touche\n"
-"dans les paramètres des raccourcis si vous le voulez."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26798,7 +26839,7 @@ msgid "Color Schemes"
 msgstr "Jeux de couleurs"
 
 msgid "Conflate object pair"
-msgstr ""
+msgstr "Combiner les objets"
 
 msgid "Added {0} object to subject layer"
 msgid_plural "Added {0} objects to subject layer"
@@ -26818,25 +26859,25 @@ msgid "Reference only"
 msgstr "Seulement la référence"
 
 msgid "Subject only"
-msgstr ""
+msgstr "Sujet seulement"
 
 msgid "Matches ({0})"
 msgstr "Correspondances ({0})"
 
 msgid "Reference only ({0})"
-msgstr ""
+msgstr "Référence seulement ({0})"
 
 msgid "Subject only ({0})"
-msgstr ""
+msgstr "Sujet seulement ({0})"
 
 msgid "Configure"
 msgstr "Configurer"
 
 msgid "Configure conflation options"
-msgstr ""
+msgstr "Configurer les options de combinaison"
 
 msgid "Delete {0} conflation matches"
-msgstr ""
+msgstr "Supprimer {0} correspondances de combinaison"
 
 msgid "Remove {0} unmatched objects"
 msgstr "Supprimer {0} objets sans correspondance"
@@ -26857,13 +26898,13 @@ msgid "Cannot replace geometry."
 msgstr "Ne peut pas remplacer la géométrie."
 
 msgid "Zoom to selected primitive(s)"
-msgstr ""
+msgstr "Agrandir pour sélectionner les primitives"
 
 msgid "Select selected primitive(s)"
-msgstr ""
+msgstr "Sélectionner les primitives retenues"
 
 msgid "Select the primitives currently selected in the list"
-msgstr ""
+msgstr "Sélectionner les primitives actuellement retenues dans la liste"
 
 msgid "Match finder settings"
 msgstr ""
@@ -26887,25 +26928,26 @@ msgid "Configure conflation settings"
 msgstr "Configurer les paramétres d’assemblage"
 
 msgid "Generate matches"
-msgstr ""
+msgstr "Générer les correspondances"
 
 msgid "Subject"
-msgstr ""
+msgstr "Objet"
 
 msgid "Selections must be made for both reference and subject."
 msgstr ""
+"Les sélections doivent être faites à la fois par référence et par objet."
 
 msgid "Incomplete selections"
 msgstr "Sélections incomplètes"
 
 msgid "Restore subject selection"
-msgstr ""
+msgstr "Restaurer la sélection de l''objet"
 
 msgid "Restore reference selection"
-msgstr ""
+msgstr "Restaurer la sélection de la référence"
 
 msgid "Freeze subject selection"
-msgstr ""
+msgstr "Geler la sélection de l''objet"
 
 msgid "No valid OSM data layer present."
 msgstr "Pas de calque de données OSM valide"
@@ -26922,6 +26964,82 @@ msgstr "Sélection vide"
 msgid "Invalid reference or subject"
 msgstr "Référence ou sujet invalide"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adresse"
 
@@ -27057,7 +27175,7 @@ msgid "The server did not return user ID"
 msgstr "Le serveur n''a pas renvoyé l''identifiant utilisateur"
 
 msgid "Failed to get messages as {0}:"
-msgstr ""
+msgstr "Impossible de récupérer les messages en tant que {0}:"
 
 msgid "GeoChat"
 msgstr "GeoChat"
@@ -27210,13 +27328,15 @@ msgid "Import"
 msgstr "Importer"
 
 msgid "GPS Blams"
-msgstr ""
+msgstr "GPS Blams"
 
 msgid "GPSBlam"
-msgstr ""
+msgstr "GPSBlam"
 
 msgid "select gpx points and \"blam!\", find centre and direction of spread"
 msgstr ""
+"sélectionnez les points GPX et « blam ! », vous en obtenez le centre et la "
+"direction approximative"
 
 msgid "Add EGPX layer"
 msgstr "Ajouter le calque EGPX"
@@ -27416,10 +27536,11 @@ msgstr ""
 "valeurs sont séparées par un point-virgule (;)"
 
 msgid "max. tracktype grade"
-msgstr ""
+msgstr "note <i>tracktype</i> maximale"
 
 msgid "Worst tracktype (1-5) the vehicle can still use, 0 for none"
 msgstr ""
+"Pire <i>tracktype</i> (1-5) utilisable par le véhicule, 0 si manquant"
 
 msgid "Change bookmark"
 msgstr "Modifier un signet"
@@ -27630,7 +27751,7 @@ msgid "Are you sure this imagery offset is wrong?"
 msgstr "Êtes-vous sûr que l’ajustement de l’imagerie est mauvaise ?"
 
 msgid "Are you sure this calibration geometry is aligned badly?"
-msgstr ""
+msgstr "Êtes-vous sûr que cette calibration d''imagerie est mauvaise ?"
 
 msgid "Warning: deprecation is basically irreversible!"
 msgstr "Attention ! La dépréciation est irrevocable"
@@ -27669,7 +27790,7 @@ msgid "Loading imagery offsets..."
 msgstr "Chargement de l’ajustement d’imagerie en cours..."
 
 msgid "Error processing XML response: {0}"
-msgstr ""
+msgstr "Erreur pendant le traitement de la réponse XML: {0}"
 
 msgid "Offset"
 msgstr "Décalage"
@@ -27716,7 +27837,7 @@ msgstr ""
 "fonction."
 
 msgid "Deprecated by {0} on {1}"
-msgstr ""
+msgstr "Dépréciée par {0} sur{1}"
 
 msgid "Created by {0} on {1}"
 msgstr "Crée par {0} le {1}"
@@ -27725,13 +27846,13 @@ msgid "Offset Information"
 msgstr "Information d’ajustement"
 
 msgid "Report this offset"
-msgstr ""
+msgstr "Rapporter ce décalage"
 
 msgid "You are to notify moderators of this offset. Why?"
 msgstr "Vous avez signalé cet ajustement à la modération pour quel raison :"
 
 msgid "Reporting the offset..."
-msgstr ""
+msgstr "Rapport du décalage..."
 
 msgid "An imagery offset of {0}"
 msgstr ""
@@ -27743,7 +27864,7 @@ msgid "A calibration geometry of {0} nodes"
 msgstr ""
 
 msgid "Determined right here"
-msgstr ""
+msgstr "Déterminé ici"
 
 msgid "Determined {0} away"
 msgstr ""
@@ -27752,7 +27873,7 @@ msgid "Reason"
 msgstr "Motif"
 
 msgid "This entry has been reported."
-msgstr ""
+msgstr "Cette entrée a été signalée."
 
 msgid "Server has rejected the request"
 msgstr "Le serveur a rejeté la requête"
@@ -27767,12 +27888,14 @@ msgid ""
 "Upload an offset for current imagery (or calibration object geometry) to a "
 "server"
 msgstr ""
+"Téléverser un décalage pour l''imagerie actuelle (ou paramètres de calibrage "
+"d''objet) vers un serveur"
 
 msgid "Store calibration geometry"
-msgstr ""
+msgstr "Enregistrer le calibrage d''imagerie"
 
 msgid "Store imagery offset"
-msgstr ""
+msgstr "Enregistrer le décalage de l''imagerie"
 
 msgid ""
 "The selected object can be used as a calibration geometry. What do you "
@@ -27794,6 +27917,10 @@ msgid ""
 "Please make sure it is as precise as possible, and describe a region this "
 "offset is applicable to."
 msgstr ""
+"Vous enregistrez un décalage d''imagerie. Les autres utilisateurs dans cette "
+"zone pourront l''utiliser pour cartographier.\n"
+"Veuillez vous assurer que ce décalage soit aussi précis que possible et "
+"décrire une région à laquelle ce décalage est applicable."
 
 msgid ""
 "You are registering a calibration geometry. It should be the most precisely "
@@ -27801,6 +27928,10 @@ msgid ""
 "clearly visible boundaries on various satellite imagery. Please describe "
 "this object and its whereabouts."
 msgstr ""
+"Vous enregistrez un calibrage d''imagerie. Il devrait être l''objet "
+"positionné le plus précisément, avec des limites\n"
+"clairement visibles sur les diverses imageries satellite. Veuillez décrire "
+"cet objet et son emplacement."
 
 msgid "Uploading a new offset..."
 msgstr "Téléchargement d’un nouveau décalage..."
@@ -28338,13 +28469,13 @@ msgid "Import pictures into Mapillary layer in a sequence"
 msgstr "Importer une séquence de photos dans un calque Mapillary"
 
 msgid "Join mode"
-msgstr ""
+msgstr "Mode assemblage"
 
 msgid "Join/unjoin pictures"
-msgstr ""
+msgstr "(Dés)assembler les images"
 
 msgid "Join Mapillary pictures"
-msgstr ""
+msgstr "Assembler les images Mapillary"
 
 msgid "Upload pictures"
 msgstr "Envoi de photographies"
@@ -28374,7 +28505,7 @@ msgid "Approve upload on the website"
 msgstr "Approuver l’envoi sur ce site web"
 
 msgid "View in website"
-msgstr ""
+msgstr "Voir sur le site"
 
 msgid "Copy key"
 msgstr "Copier la clé"
@@ -28395,7 +28526,7 @@ msgid "Export selected images"
 msgstr "Exporter les images sélectionnées"
 
 msgid "Rewrite imported images"
-msgstr ""
+msgstr "Réécrire les images importées"
 
 msgid "Select a folder"
 msgstr "Sélectionner un dossier"
@@ -28413,19 +28544,19 @@ msgid "Give way"
 msgstr "Cédez-le-passage"
 
 msgid "No entry"
-msgstr ""
+msgstr "Aucune entrée"
 
 msgid "Intersection danger"
-msgstr ""
+msgstr "Danger à l''intersection"
 
 msgid "Mandatory direction (any)"
-msgstr ""
+msgstr "Prescription de sens (n''importe lequel)"
 
 msgid "No turn"
-msgstr ""
+msgstr "Changement de direction interdit"
 
 msgid "Uneven road"
-msgstr ""
+msgstr "Route déformée"
 
 msgid "No parking"
 msgstr "Stationnement interdit"
@@ -28445,35 +28576,44 @@ msgstr "Mois"
 msgid "Days"
 msgstr "Jours"
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr "filtre Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Ouvrir le dialogue du filtre Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Photos téléchargées"
 
 msgid "Only images with signs"
-msgstr ""
+msgstr "Seulement les images avec panneaux"
 
 msgid "Choose signs"
-msgstr ""
+msgstr "Choisir les panneaux"
 
 msgid "Mapillary history"
-msgstr ""
+msgstr "Historique de Mapillary"
 
 msgid "Open Mapillary history dialog"
-msgstr ""
+msgstr "Ouvrir la fenêtre d''historique de Mapillary"
+
+msgid "Mapillary picture"
+msgstr "Image Mapillary"
 
 msgid "Open Mapillary window"
 msgstr "Ouvrir la fenêtre Mapillary"
 
 msgid "Mapillary dialog"
-msgstr ""
+msgstr "Fenêtre Mapillary"
 
 msgid "Open Mapillary main dialog"
-msgstr ""
+msgstr "Ouvrir la fenêtre Mapillary principale"
 
 msgid "Next picture"
 msgstr "Photo suivante"
@@ -28488,31 +28628,31 @@ msgid "Shows the previous picture in the sequence"
 msgstr "Voir la photo précédente"
 
 msgid "Jump to red"
-msgstr ""
+msgstr "Aller en rouge"
 
 msgid "Jumps to the picture at the other side of the red line"
 msgstr "Passer à l’image de l’autre côté de la ligne rouge"
 
 msgid "Jump to blue"
-msgstr ""
+msgstr "Aller en bleu"
 
 msgid "Jumps to the picture at the other side of the blue line"
 msgstr "Passer à l’image de l’autre côté de la ligne bleue"
 
 msgid "Stops the walk."
-msgstr ""
+msgstr "Arrête la marche."
 
 msgid "Play"
 msgstr "Lecture"
 
 msgid "Continues with the paused walk."
-msgstr ""
+msgstr "Continue la marche arrêtée."
 
 msgid "Pause"
-msgstr ""
+msgstr "Pause"
 
 msgid "Pauses the walk."
-msgstr ""
+msgstr "Suspend la marche."
 
 msgid "Reverse buttons position when displaying images."
 msgstr "Inverser la position des boutons lors de l’affichage des photos."
@@ -28538,10 +28678,10 @@ msgid "Delete after upload"
 msgstr "Effacer après l’envoi"
 
 msgid "Wait for full quality pictures"
-msgstr ""
+msgstr "Attendre les images en pleine résolution"
 
 msgid "Follow selected image"
-msgstr ""
+msgstr "Suivre l''image sélectionnée"
 
 msgid "Go forward"
 msgstr "Avancer"
@@ -28557,7 +28697,7 @@ msgstr[0] "{0} image importée"
 msgstr[1] "{0} images importées"
 
 msgid "2 images joined"
-msgstr ""
+msgstr "2 images assemblées"
 
 msgid "Moved {0} image"
 msgid_plural "Moved {0} images"
@@ -28570,12 +28710,14 @@ msgstr[0] "{0} image tournée"
 msgstr[1] "{0} images tournées"
 
 msgid "2 images unjoined"
-msgstr ""
+msgstr "2 images désassemblées"
 
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
 msgstr ""
+"La zone OSM téléchargée est trop vaste. Le téléchargement restera semi-"
+"automatique jusqu''au redémarrage du calque."
 
 msgid "Downloading"
 msgstr "Téléchargement en cours"
@@ -28625,7 +28767,7 @@ msgid "Selection Area"
 msgstr "Zone de sélection"
 
 msgid "Selection Radius"
-msgstr ""
+msgstr "Rayon de sélection"
 
 msgid "Angle"
 msgstr "Angle"
@@ -28819,6 +28961,8 @@ msgid ""
 "(To miserably continue mapping, edit out no_more_mapping\n"
 "from {0})"
 msgstr ""
+"(Pour continuer lamentablement la cartographie, supprimez no_more_mapping\n"
+"de {0})"
 
 msgid "Split by municipality"
 msgstr "Découper par municipalité"
@@ -28833,10 +28977,10 @@ msgid "Split this data by sector (admin_level=10)."
 msgstr "Séparer cette donnée par secteur (admin_level=10)."
 
 msgid "Split by neighbourhood"
-msgstr ""
+msgstr "Séparer selon le voisinage"
 
 msgid "Split this data by neighbourhood (admin_level=11)."
-msgstr ""
+msgstr "Séparer ces données selon le voisinage (admin_level=11)."
 
 msgid "Download open data"
 msgstr "Téléchargement de données ouvertes"
@@ -28867,12 +29011,14 @@ msgstr ""
 "Je refuse les termes et les conditions de licence. Téléchargment annulé"
 
 msgid "Module bundled with opendata plugin"
-msgstr ""
+msgstr "Module fourni avec le greffon opendata"
 
 msgid ""
 "Please click on <strong>Download list</strong> to download and display a "
 "list of available modules."
 msgstr ""
+"Veuillez cliquer sur  <strong>Télécharger la liste</strong> pour télécharger "
+"et afficher une liste des modules disponibles."
 
 msgid ""
 "The following module has been downloaded <strong>successfully</strong>:"
@@ -28893,10 +29039,10 @@ msgid "Modules"
 msgstr "Modules"
 
 msgid "Accept the new module sites and close the dialog"
-msgstr ""
+msgstr "Accepter le nouveau site de modules et ferme la fenêtre"
 
 msgid "Configure Module Sites"
-msgstr ""
+msgstr "Configurer les sites de modules"
 
 msgid "Download the list of available modules"
 msgstr "Télécharger la liste des modules disponibles"
@@ -28964,6 +29110,9 @@ msgid ""
 "Terms and Conditions of Use of each portal<br/>before any upload of data "
 "loaded by this plugin."
 msgstr ""
+"Un gestionnaire dédié pour nombre de portails Open Data<br/><br/>Veuillez "
+"lire les Conditions d''utilisation de chaque portail<br/>avant d''envoyer "
+"quelque donnée que ce soit qui ait été générée par ce greffon."
 
 msgid "General settings"
 msgstr "Paramètres généraux"
@@ -29039,7 +29188,7 @@ msgid ""
 msgstr ""
 
 msgid "Try lenient method"
-msgstr ""
+msgstr "Essayer la méthode tolérante"
 
 msgid "GML files"
 msgstr "Fichiers GML"
@@ -29067,7 +29216,7 @@ msgid "Unable to detect CRS !"
 msgstr "Incapable de détecter le Système de coordonnées de référence !"
 
 msgid "Unable to find a data store for file {0}"
-msgstr ""
+msgstr "Impossible de trouver une banque de données pour le fichier {0}"
 
 msgid "Loading shapefile ({0} features)"
 msgstr "Chargement du shapefile ({0} éléments)"
@@ -29098,28 +29247,30 @@ msgstr ""
 "données"
 
 msgid "View Local Portal page"
-msgstr ""
+msgstr "Voir la page des portails locaux"
 
 msgid "Launch browser to the local portal page of the selected data set"
-msgstr ""
+msgstr "Naviguer vers la page du portail local du jeu de données sélectionné"
 
 msgid "View National Portal page"
-msgstr ""
+msgstr "Voir la page du portail national"
 
 msgid "Launch browser to the national portal page of the selected data set"
 msgstr ""
+"Naviguer vers la page du portail national du jeu de données sélectionné"
 
 msgid "View License"
 msgstr "Afficher la licence"
 
 msgid "Launch browser to the license page of the selected data set"
-msgstr ""
+msgstr "Naviguer vers la page de la licence du jeu de données sélectionné"
 
 msgid "View License (summary)"
 msgstr "Voir la licence (résumé)"
 
 msgid "Launch browser to the summary license page of the selected data set"
 msgstr ""
+"Naviguer vers la page du résumé de licence du jeu de données sélectionné"
 
 msgid "View the license of the selected data set"
 msgstr "Voir la licence des données selectionnées"
@@ -29164,6 +29315,8 @@ msgid ""
 "Running module update after elapsed update interval. Automatic update at "
 "startup is disabled."
 msgstr ""
+"Lancement de la mise à jour du module après écoulement de l''intervalle "
+"entre mises à jour. La mise à jour automatique au démarrage est désactivée."
 
 msgid "Could not load module {0}. Delete from preferences?"
 msgstr "Chargement du module impossible {0}. A supprimer de vos préférences"
@@ -29264,17 +29417,17 @@ msgid "Reading local module information.."
 msgstr "Lecture des informations des modules locaux..."
 
 msgid "Processing module site cache files..."
-msgstr ""
+msgstr "Traitement des fichiers cache du site du module..."
 
 msgid ""
 "Warning: Failed to scan file ''{0}'' for module information. Skipping."
 msgstr ""
 
 msgid "Processing module site cache icon files..."
-msgstr ""
+msgstr "Traitement des fichiers cache d''icônes du site du module..."
 
 msgid "Processing module files..."
-msgstr ""
+msgstr "Traitement des fichiers du module…"
 
 msgid "Download module list..."
 msgstr "Télécharger la liste des modules…"
@@ -29638,6 +29791,8 @@ msgid ""
 "Click+drag photo, shift+click to position photo, control+click to set "
 "direction."
 msgstr ""
+"Glisser la photo, Maj+clic pour la positionner, Ctrl+clic pour choisir la "
+"direction."
 
 msgid "Please load some photos."
 msgstr "Veuillez importer quelques photos."
@@ -29661,10 +29816,10 @@ msgid "Loading file failed: {0}"
 msgstr "Le chargement du fichier a échoué : {0}"
 
 msgid "Load World File Calibration..."
-msgstr ""
+msgstr "Chargement du fichier de calibrage mondial..."
 
 msgid "Loads calibration data from a world file"
-msgstr ""
+msgstr "Charge les données de calibrage depuis un fichier mondial"
 
 msgid "Reset Calibration"
 msgstr "Réinitialiser le calibrage"
@@ -29856,10 +30011,10 @@ msgid "New address point added."
 msgstr "Nouveau point d’adresse ajouté"
 
 msgid "Download Osmosis poly"
-msgstr ""
+msgstr "Télécharger le polygone Osmosis"
 
 msgid "Reading polygon filter file..."
-msgstr ""
+msgstr "Lecture du fichier des filtres polygone..."
 
 msgid "Error reading poly file: {0}"
 msgstr "Erreur de lecture du fichier Poly {0}"
@@ -29884,7 +30039,7 @@ msgid "{0} points were outside world bounds and were moved"
 msgstr "{0} point étaient hors des frontières et ont été déplacés"
 
 msgid "Osmosis polygon filter files"
-msgstr ""
+msgstr "Fichiers de filtre polygone Osmosis"
 
 msgid "Print..."
 msgstr "Imprimer..."
@@ -30232,6 +30387,8 @@ msgstr "Sélectionner un filtre"
 
 msgid "JSlider initialization error. Make sure your meta-inf is correct."
 msgstr ""
+"Erreur d''initialisation JSlider. Assurez-vous que votre fichier meta-inf "
+"est correct."
 
 msgid "Relation Toolbox"
 msgstr "Boîte d’outils de relation"
@@ -30264,7 +30421,7 @@ msgid "Always split ways of neighbouring multipolygons"
 msgstr "Toujours scinder les chemins de contour de multipolygones voisins"
 
 msgid "Change role"
-msgstr ""
+msgstr "Changer de rôle"
 
 msgid "Enter role for selected members"
 msgstr "Entrez le rôle des membres sélectionnés"
@@ -30339,7 +30496,7 @@ msgid "Reconstruct polygons from relation {0}"
 msgstr "Reconstruire les polygones de la relation {0}"
 
 msgid "Reconstruct route"
-msgstr ""
+msgstr "Reconstruire l''itinéraire"
 
 msgid "Open relation wiki page"
 msgstr "Ouvrir la page wiki de la relation"
@@ -30423,7 +30580,7 @@ msgid "History reverter"
 msgstr "Réversion de l’historique"
 
 msgid "Tool: Display objects history dialog"
-msgstr ""
+msgstr "Outil: afficher la fenêtre d''historique des objets"
 
 msgid "Preparing history data..."
 msgstr "Préparation des données de l’historique…"
@@ -30553,10 +30710,10 @@ msgstr ""
 "Supprimer la relation ''{0}'' à la position {1} de la relation ''{2}''"
 
 msgid "routing active route"
-msgstr ""
+msgstr "traçage d''itinéraire actif"
 
 msgid "routing inactive route"
-msgstr ""
+msgstr "traçage d''itinéraire inactif"
 
 msgid "Routing"
 msgstr "Calcul d’itinéraire"
@@ -30665,7 +30822,7 @@ msgid "About SDS..."
 msgstr "Au sujet de SDS..."
 
 msgid "Open a preferences dialog for SDS."
-msgstr ""
+msgstr "Ouvrir la fenêtre des préférences SDS."
 
 msgid "Separate Data Store"
 msgstr "Magasin de donnée séparé"
@@ -30811,13 +30968,13 @@ msgid "SeaMap Editor"
 msgstr "Éditeur de carte maritime"
 
 msgid "Spline drawing"
-msgstr ""
+msgstr "Dessin de spline"
 
 msgid "Draw a spline curve"
 msgstr "Tracer une courbe spline"
 
 msgid "Spline goes outside of the world."
-msgstr ""
+msgstr "La spline sort du globe."
 
 msgid "Add an existing node to spline: {0}"
 msgstr ""
@@ -30829,7 +30986,7 @@ msgid "Delete spline node {0}"
 msgstr ""
 
 msgid "Finish spline"
-msgstr ""
+msgstr "Achever la spline"
 
 msgid "Splines"
 msgstr "Splines"
@@ -30838,7 +30995,7 @@ msgid "Spline drawing preferences"
 msgstr "Préférences de tracé des splines"
 
 msgid "Curve steps"
-msgstr ""
+msgstr "Morceaux de la courbe"
 
 msgid "Undelete node {0}"
 msgstr "Restaurer noeud {0}"
@@ -30847,7 +31004,7 @@ msgid "OSM Export"
 msgstr "Export OSM"
 
 msgid "Export traffic data to SUMO network file."
-msgstr ""
+msgstr "Exporter les données de trafic vers un fichier réseau SUMO"
 
 msgid "SUMO Export"
 msgstr "Export SUMO"
@@ -31047,6 +31204,64 @@ msgstr ""
 msgid "Terrace"
 msgstr "Bâtiments mitoyens"
 
+msgid "To-fix"
+msgstr "À réparer"
+
+msgid "Open to-fix window."
+msgstr "Ouvrir la fenêtre des éléments à réparer"
+
+msgid "Tool:To-fix"
+msgstr "Outil:À réparer"
+
+msgid "Skip"
+msgstr "Passer"
+
+msgid "Skip Error"
+msgstr "Passer l''erreur"
+
+msgid "Fixed"
+msgstr "Corrigé"
+
+msgid "Fixed Error"
+msgstr "Erreur corrigée"
+
+msgid "Not an error"
+msgstr "Pas d''erreur"
+
+msgid "Set download area (m²)"
+msgstr "Régler la zone de téléchargement (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "À réparer:Passer l''élément"
+
+msgid "tofix:Fixed item"
+msgstr "À réparer:Élément corrigé"
+
+msgid "tofix:Not a Error item"
+msgstr "À réparer:Élément sans erreur"
+
+msgid "Maintenance server"
+msgstr "Serveur de maintenance"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Quelque chose s''est mal déroulé, veuillez mettre à jour le greffon ou "
+"signaler le problème à <a href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Quelque chose a mal tourné, essayez à nouveau"
+
+msgid "Cannot place a node outside of the world."
+msgstr "Impossible de placer un nœud hors du monde."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Parcourir"
 
@@ -32863,6 +33078,8 @@ msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
 msgstr ""
+"Copie le patron {0}, instancié avec les coordonnées du premier nœud "
+"sélectionné, dans le presse-papiers"
 
 msgid "Copy {0} template"
 msgstr "Copier le modèle {0}"
diff --git a/i18n/po/ga.po b/i18n/po/ga.po
index af725c2..baf0622 100644
--- a/i18n/po/ga.po
+++ b/i18n/po/ga.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-05-17 11:43+0000\n"
 "Last-Translator: Thorsten <Unknown>\n"
 "Language-Team: Irish <ga at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:43+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:42+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1362,6 +1362,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2080,17 +2089,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2502,6 +2505,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2523,6 +2532,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4358,9 +4375,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7850,9 +7864,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8749,6 +8760,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8848,6 +8862,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10778,9 +10799,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11849,34 +11867,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11907,52 +11943,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12299,10 +12317,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14449,6 +14463,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14741,6 +14758,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14927,12 +14947,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15187,6 +15213,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15220,12 +15256,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15532,6 +15566,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15847,59 +15886,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18386,6 +18375,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18497,12 +18513,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18554,9 +18564,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18678,12 +18685,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18715,6 +18716,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19022,10 +19035,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19055,24 +19074,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19366,6 +19373,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20053,9 +20078,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21191,10 +21213,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21221,10 +21240,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21251,6 +21273,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21266,6 +21291,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23182,9 +23210,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23478,9 +23503,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24135,13 +24157,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24767,6 +24782,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26200,12 +26291,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26221,6 +26318,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28680,6 +28780,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/gl.po b/i18n/po/gl.po
index 51c2bb9..9f871ba 100644
--- a/i18n/po/gl.po
+++ b/i18n/po/gl.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-02-02 23:45+0000\n"
 "Last-Translator: Adrián Chaves Fernández <adriyetichaves at gmail.com>\n"
 "Language-Team: Galician <proxecto at trasno.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:43+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:42+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: gl\n"
 "X-Poedit-Language: Galician\n"
 
@@ -1489,6 +1489,15 @@ msgstr[0] ""
 msgstr[1] ""
 "Hai máis de unha vía usando os nodos que escolleu. Escolla tamén a vía."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Debes escoller dous ou máis nodos para separar unha vía circular."
 
@@ -2237,17 +2246,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2666,6 +2669,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2687,6 +2696,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr "A procurar"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Non se atoparon coincidencias para «{0}»"
 
@@ -4575,9 +4592,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Non mostrar esto outra vez(recordar escolla)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incompleto"
 
@@ -8213,9 +8227,6 @@ msgstr "Relación {0}"
 msgid "Object"
 msgstr "Obxecto"
 
-msgid "not present"
-msgstr "non presente"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -9134,6 +9145,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9233,6 +9247,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -11226,9 +11247,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12305,34 +12323,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipo descoñecido: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Máis información sobre desta característica"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
-msgstr "Roles dispoñibles"
+msgid "Roles cannot appear more than once"
+msgstr ""
 
-msgid "role"
-msgstr "rol"
+msgid "Preset role element without parent"
+msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
-msgstr "elementos"
+msgid "Error parsing {0}: "
+msgstr "Erro analizando {0}: "
 
-msgid "Optional Attributes:"
-msgstr "Atributos Opcionais:"
+msgid "Search preset"
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr "Axustes prestablecidos"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12363,52 +12399,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Tipo descoñecido: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Máis información sobre desta característica"
 
-msgid "Error parsing {0}: "
-msgstr "Erro analizando {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributos Opcionais:"
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
-msgstr ""
+msgid "Available roles"
+msgstr "Roles dispoñibles"
 
-msgid "Presets"
-msgstr "Axustes prestablecidos"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
-msgstr ""
+msgid "elements"
+msgstr "elementos"
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12777,10 +12795,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14988,6 +15002,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15280,6 +15297,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15466,12 +15486,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15726,6 +15752,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15759,12 +15795,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16097,6 +16131,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Crea edificion entre medianeras a partires de bloques únicos"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16421,59 +16460,9 @@ msgstr "Operador/a"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Horario de apertura"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Sillas de rodas"
 
@@ -18961,6 +18950,33 @@ msgstr "Albergue"
 msgid "Alpine Hut"
 msgstr "Cabaña alpina"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Descripción detallada"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19072,12 +19088,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turismo"
 
@@ -19129,9 +19139,6 @@ msgstr "cidade"
 msgid "region"
 msgstr "rexión"
 
-msgid "Closer Description"
-msgstr "Descripción detallada"
-
 msgid "Routes shown for:"
 msgstr "Rutas mostradas para:"
 
@@ -19253,12 +19260,6 @@ msgstr "sauna"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Zona de xogos"
 
@@ -19290,6 +19291,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -19597,10 +19610,16 @@ msgstr "Veterinario"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19630,24 +19649,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Buzón de Correos"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19941,6 +19948,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20628,9 +20653,6 @@ msgstr "Faro"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21766,11 +21788,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Grandes Almacéns"
-
-msgid "Mall"
-msgstr "Centro comercial"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Farmacia"
@@ -21796,12 +21815,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "Erotica"
 
+msgid "Department Store"
+msgstr "Grandes Almacéns"
+
+msgid "Mall"
+msgstr "Centro comercial"
+
 msgid "Florist"
 msgstr "Floristería"
 
@@ -21826,6 +21848,9 @@ msgstr "Intrumentos Musicais"
 msgid "Toys"
 msgstr "Xoguetes"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr "Tenda de variedades"
 
@@ -21841,6 +21866,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23757,9 +23785,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr "Editar enderezo"
 
-msgid "Searching"
-msgstr "A procurar"
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24053,9 +24078,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24717,13 +24739,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25357,6 +25372,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26796,12 +26887,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26817,6 +26914,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29284,6 +29384,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Examinar"
 
diff --git a/i18n/po/he.po b/i18n/po/he.po
index f1c33b4..0bb9f78 100644
--- a/i18n/po/he.po
+++ b/i18n/po/he.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2013-03-30 13:38+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Hebrew <he at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:45+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:43+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: he\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1367,6 +1367,15 @@ msgid_plural ""
 msgstr[0] "יותר מדרך אחת משתמשת בנקודה שבחרת. בחר גם את הדרך."
 msgstr[1] "יותר מדרך אחת משתמשת בנקודות שבחרת. בחר גם את הדרך."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "אתה חייב לבחור שתי נקודות או יותר כדי לפצל דרך מעגלית."
 
@@ -2087,17 +2096,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2511,6 +2514,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2532,6 +2541,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "לא נמצאה התאמה עבור \"{0}\""
 
@@ -4376,9 +4393,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr "לא גמור"
 
@@ -7878,9 +7892,6 @@ msgstr ""
 msgid "Object"
 msgstr "פריט"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8777,6 +8788,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8876,6 +8890,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10816,9 +10837,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11887,34 +11905,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "סוג לא ידוע: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "עוד מידע על הכלי הזה"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "role"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Error parsing {0}: "
+msgstr "שגיאה בניתוח {0}: "
+
+msgid "Search preset"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "מאפייני רשות:"
+msgid "Show preset search dialog"
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search presets"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11945,52 +11981,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "סוג לא ידוע: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
-msgstr ""
+msgid "More information about this feature"
+msgstr "עוד מידע על הכלי הזה"
 
-msgid "Error parsing {0}: "
-msgstr "שגיאה בניתוח {0}: "
+msgid "Optional Attributes:"
+msgstr "מאפייני רשות:"
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12339,10 +12357,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14491,6 +14505,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14783,6 +14800,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14969,12 +14989,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15229,6 +15255,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15262,12 +15298,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15574,6 +15608,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15889,59 +15928,9 @@ msgstr "מפעיל"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "שעות פתיחה"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18428,6 +18417,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18539,12 +18555,6 @@ msgstr ""
 msgid "Bar"
 msgstr "בר"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "תיירות"
 
@@ -18596,9 +18606,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18720,12 +18727,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "מגרש משחקים"
 
@@ -18757,6 +18758,18 @@ msgstr "דייג"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19064,10 +19077,16 @@ msgstr "וטרינרי"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19097,24 +19116,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "תיבת דואר"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19408,6 +19415,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20095,9 +20120,6 @@ msgstr "מגדלור"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21233,10 +21255,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21263,10 +21282,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21293,6 +21315,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21308,6 +21333,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23224,9 +23252,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23520,9 +23545,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24177,13 +24199,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24809,6 +24824,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26245,12 +26336,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26266,6 +26363,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28726,6 +28826,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "מדרג"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/hi.po b/i18n/po/hi.po
index ac98751..3d9d6c2 100644
--- a/i18n/po/hi.po
+++ b/i18n/po/hi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-11-14 16:28+0000\n"
 "Last-Translator: nipunreddevil <nipunreddevil at gmail.com>\n"
 "Language-Team: Hindi <hi at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:45+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:44+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: hi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/hr.po b/i18n/po/hr.po
index 005973b..84b5619 100644
--- a/i18n/po/hr.po
+++ b/i18n/po/hr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-02-25 14:38+0000\n"
 "Last-Translator: gogo <trebelnik2 at gmail.com>\n"
 "Language-Team: Croatian <hr at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:59+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:56+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: hr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1432,6 +1432,15 @@ msgstr[1] ""
 msgstr[2] ""
 "Postoji još puteva koji koriste izabranu točku. Izaberite i put također."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Morate izabrati dvije ili više točaka da bi razdvojili kružni put."
 
@@ -2170,17 +2179,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr "Ne mogu dodati točku van Svijeta"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr "Ne mogu izbrisati točku koja sadržava tagove"
 
@@ -2595,6 +2598,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2616,6 +2625,14 @@ msgstr "objekti u preuzetom području"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "objekti (i sve točke puta / članovi relacije) u preuzetom području"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4472,9 +4489,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7973,9 +7987,6 @@ msgstr "Relacija {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8895,6 +8906,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8995,6 +9009,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10929,9 +10950,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12000,34 +12018,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12058,52 +12094,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12450,10 +12468,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14600,6 +14614,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14892,6 +14909,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15078,12 +15098,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15338,6 +15364,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15371,12 +15407,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15683,6 +15717,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15998,59 +16037,9 @@ msgstr "Operater"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Invalidska kolica"
 
@@ -18537,6 +18526,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18648,12 +18664,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18705,9 +18715,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18829,12 +18836,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18866,6 +18867,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19173,10 +19186,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19206,24 +19225,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19517,6 +19524,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20204,9 +20229,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21342,10 +21364,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21372,10 +21391,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21402,6 +21424,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21417,6 +21442,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23333,9 +23361,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23629,9 +23654,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24286,13 +24308,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24918,6 +24933,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26351,12 +26442,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26372,6 +26469,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28835,6 +28935,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terasa"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Ne mogu dodati točku van Svijeta"
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ht.po b/i18n/po/ht.po
index 417514b..a297e7f 100644
--- a/i18n/po/ht.po
+++ b/i18n/po/ht.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2010-03-11 21:17+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Haitian; Haitian Creole <ht at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:44+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:43+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/hu.po b/i18n/po/hu.po
index 944e461..88d500f 100644
--- a/i18n/po/hu.po
+++ b/i18n/po/hu.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-09 22:14+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-15 22:25+0000\n"
 "Last-Translator: Báthory Péter <bathory86p at gmail.com>\n"
 "Language-Team: Hungarian <kde-l10n-hu at kde.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:46+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:44+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: hu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1486,6 +1486,15 @@ msgstr[1] ""
 "Több vonal is van, amelynek a kijelölt pontok tagjai. Válaszd ki a vonalat "
 "is."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Körvonalat csak kettő vagy több pont kijelölésével lehet felosztani."
 
@@ -2264,17 +2273,11 @@ msgstr ""
 "Kattints a kijelölt pont mozgatásához. Nyomj Ctrl-t új pont beillesztéséhez, "
 "Alt-ot a törléshez."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Nem lehet pontot helyezni a világon kívülre."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Új pont hozzáadása vonalhoz"
 msgstr[1] "Új pont hozzáadása {0} vonalhoz"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Nem lehet törölni több objektumhoz is csatlakozó pontot"
-
 msgid "Cannot delete node that has tags"
 msgstr "Nem lehet törölni felcímkézett pontot"
 
@@ -2715,6 +2718,12 @@ msgstr "a kifejezéssel egyező objektumok összes gyereke"
 msgid "all parents of objects matching the expression"
 msgstr "a kifejezéssel egyező objektumok összes szülője"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "kapcsolat n-edik tagja, és/vagy vonal n-edik pontja"
 
@@ -2740,6 +2749,14 @@ msgstr ""
 "objektumok (és azok vonalainak pontjai / kapcsolat tagjai) a letöltött "
 "területen"
 
+msgid "Searching"
+msgstr "Keresés"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Nincs találat a(z) \"{0}\" kifejezésre"
 
@@ -4708,9 +4725,6 @@ msgstr "Ne mutasd újra (a munkamenet során)"
 msgid "Do not show again (remembers choice)"
 msgstr "Ne mutasd újra (emlékezz a választásomra)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "félkész"
 
@@ -8508,9 +8522,6 @@ msgstr "{0} kapcsolat"
 msgid "Object"
 msgstr "Objektum"
 
-msgid "not present"
-msgstr "nem létezik"
-
 msgid "Changeset comment"
 msgstr "Módosításcsomag megjegyzése"
 
@@ -9550,14 +9561,17 @@ msgstr "Képpont méretarány: {0}"
 msgid "Best zoom: {0}"
 msgstr "Legjobb nagyítás: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Becsült gyorsítótár méret: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Gyorsítótár adatok: {0}"
 
 msgid "{0} ({1}), automatically downloading in zoom {2}"
-msgstr ""
+msgstr "{0} ({1}), automatikus letöltés zoom {2}-n"
 
 msgid "{0} ({1}), downloading in zoom {2}"
-msgstr ""
+msgstr "{0} ({1}), letöltés zoom {2}-n"
 
 msgid "Downloaded {0}/{1} tiles"
 msgstr "{0}/{1} csempe letöltve"
@@ -9633,7 +9647,7 @@ msgid "Imagery fade"
 msgstr "Légifelvétel áttetszősége"
 
 msgid "Unsupported imagery type: {0}"
-msgstr ""
+msgstr "Nem támogatott légifelvétel típus: {0}"
 
 msgid "ERROR"
 msgstr "HIBA"
@@ -9650,6 +9664,17 @@ msgstr "Előző jelölő"
 msgid "Jump to previous marker"
 msgstr "Ugrás az előző jelölőhöz"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Egy réteg hozzáadásához legalább {0,number,#}MB memóriát kosztanod a JOSM "
+"számára, a -Xmx{0,number,#}M kapcsoló használatával (lásd "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Jelenleg {1,number,#}MB memória van a JOSM számára kiszotva"
+
 msgid "All projections are supported"
 msgstr "Az összes vetület támogatott"
 
@@ -9658,6 +9683,9 @@ msgid ""
 "Supported projections are: {2}\n"
 "Change the projection again or remove the layer."
 msgstr ""
+"A(z) {0} réteg nem támogatja az új {1} vetületet.\n"
+"Támogatott vetületek: {2}\n"
+"Módosítsd újra a vetületet, vagy távolítsd el a réteget."
 
 msgid "Save Layer"
 msgstr "Réteg mentése"
@@ -9756,6 +9784,8 @@ msgid ""
 "JOSM will use EPSG:4326 to query the server, but results may vary depending "
 "on the WMS server"
 msgstr ""
+"A JOSM EPSG:4326 (WGS84) vetületet fog használni a szerverről lekérdezéshez, "
+"de a válasz a WMS szervertől függően eltérhet"
 
 msgid "Correlate to GPX"
 msgstr "Korrelálás GPX-hez"
@@ -11759,19 +11789,19 @@ msgid "No bounding box was found for this layer."
 msgstr "A réteghez nem található befoglalónégyzet."
 
 msgid "1. Enter getCapabilities URL"
-msgstr ""
+msgstr "1. Add meg a getCapatilities művelet URL-jét"
 
 msgid "2. Enter name for this layer"
-msgstr ""
+msgstr "2. Adj egy nevet a rétegnek"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "{0} gyorsítótár, teljes méret: {1} bájt"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Gyorsítótár neve"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Objektumok száma"
 
 msgid "imagery fade"
 msgstr "légifelvétel áttetszősége"
@@ -11795,13 +11825,10 @@ msgid "Tile cache directory: "
 msgstr "Csempegyorsítótár könyvtár: "
 
 msgid "Maximum size of disk cache (per imagery) in MB: "
-msgstr ""
-
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
+msgstr "Maximális lemez gyorsítótár méret (légifelvételenként) megabájtban: "
 
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Csempe zoom eltolás:"
 
 msgid "Imagery Preferences"
 msgstr "Légifelvétel beállítások"
@@ -11910,7 +11937,7 @@ msgid "Simultaneous connections:"
 msgstr "Szimultán kapcsolatok:"
 
 msgid "Tile size:"
-msgstr ""
+msgstr "Csempeméret:"
 
 msgid "Auto save enabled"
 msgstr "Automatikus mentés engedélyezése"
@@ -12594,12 +12621,14 @@ msgid "Check interval (minutes):"
 msgstr "Ellenőrzés intervalluma (perc):"
 
 msgid "Max age for closed notes (days):"
-msgstr ""
+msgstr "Lezárt jegyzetek maximális kora (nap):"
 
 msgid ""
 "Specifies the number of days a note needs to be closed to no longer be "
 "downloaded"
 msgstr ""
+"Meghatározza, hogy a jegyzet hány napja kell lezárva legyen ahhoz, hogy "
+"többé ne töltődjön le"
 
 msgid "Failed to retrieve OAuth Access Token from credential manager"
 msgstr "Nem sikerült lekérni az OAuth elérési tokent az igazoláskezelőtől."
@@ -12959,35 +12988,54 @@ msgstr "Cimkék módosítása"
 msgid "Add or remove toolbar button"
 msgstr "Eszköztár gomb hozzáadása vagy levétele"
 
-msgid "Unknown requisite: {0}"
-msgstr "Ismeretlen követelmény: {0}"
+msgid "Unknown type: {0}"
+msgstr "Ismeretlen típus: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Helytelen tagi kifejezés: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Készletcsoport {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "További információk erről a tulajdonságról"
+msgid "Preset group {0}"
+msgstr "Készletcsoport {0}"
 
-msgid "Available roles"
-msgstr "Elérhető szerepek"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
+"A(z) {0} beállítás hamarabb kerülne használatba, mint ahogy definiálva van"
 
-msgid "role"
-msgstr "szerep"
+msgid "Roles cannot appear more than once"
+msgstr "Szerepek nem jelenhetnek meg egytől többször"
 
-msgid "count"
-msgstr "száma"
+msgid "Preset role element without parent"
+msgstr "szerep elem beállítása szülő nélkül"
 
-msgid "elements"
-msgstr "elemek"
+msgid "Preset sub element without parent"
+msgstr "al-elem beállítása szülő nélkül"
 
-msgid "Optional Attributes:"
-msgstr "Opcionális tulajdonságok:"
+msgid "Error parsing {0}: "
+msgstr "Értelmezési hiba {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Mező értékének automatikus növelése: {0}"
+msgid "Search preset"
+msgstr "Címkekészlet keresése"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Automaikus növelés törlése a mezőről"
+msgid "Show preset search dialog"
+msgstr "Készletkereső ablak megnyitása"
+
+msgid "Search presets"
+msgstr "Készlet keresése"
+
+msgid "Presets"
+msgstr "Címkék"
+
+msgid "Search for objects by preset"
+msgstr "Objektumok keresése címkekészlet alapján"
+
+msgid "Show only applicable to selection"
+msgstr "Csak az alkalmahatók megjelenítése"
+
+msgid "Search in tags"
+msgstr "Keresés címkék között"
+
+msgid "Add toolbar button"
+msgstr "Eszköztár gomb hozzáadása"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13027,54 +13075,35 @@ msgstr ""
 "Sérült cimkézési beállítás \"{0}-{1}\" - az elemek számának egyeznie kell a "
 "''short_descriptions''-ban és a ''values''-ban"
 
-msgid "Unknown type: {0}"
-msgstr "Ismeretlen típus: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Készletcsoport {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Készletcsoport {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-"A(z) {0} beállítás hamarabb kerülne használatba, mint ahogy definiálva van"
-
-msgid "Roles cannot appear more than once"
-msgstr "Szerepek nem jelenhetnek meg egytől többször"
-
-msgid "Preset role element without parent"
-msgstr "szerep elem beállítása szülő nélkül"
-
-msgid "Preset sub element without parent"
-msgstr "al-elem beállítása szülő nélkül"
+msgid "More information about this feature"
+msgstr "További információk erről a tulajdonságról"
 
-msgid "Error parsing {0}: "
-msgstr "Értelmezési hiba {0}: "
+msgid "Optional Attributes:"
+msgstr "Opcionális tulajdonságok:"
 
-msgid "Search preset"
-msgstr "Címkekészlet keresése"
+msgid "Unknown requisite: {0}"
+msgstr "Ismeretlen követelmény: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Készletkereső ablak megnyitása"
+msgid "Illegal member expression: {0}"
+msgstr "Helytelen tagi kifejezés: {0}"
 
-msgid "Search presets"
-msgstr "Készlet keresése"
+msgid "Available roles"
+msgstr "Elérhető szerepek"
 
-msgid "Presets"
-msgstr "Címkék"
+msgid "role"
+msgstr "szerep"
 
-msgid "Search for objects by preset"
-msgstr "Objektumok keresése címkekészlet alapján"
+msgid "count"
+msgstr "száma"
 
-msgid "Show only applicable to selection"
-msgstr "Csak az alkalmahatók megjelenítése"
+msgid "elements"
+msgstr "elemek"
 
-msgid "Search in tags"
-msgstr "Keresés címkék között"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Mező értékének automatikus növelése: {0}"
 
-msgid "Add toolbar button"
-msgstr "Eszköztár gomb hozzáadása"
+msgid "Cancel auto-increment for this field"
+msgstr "Automaikus növelés törlése a mezőről"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13488,12 +13517,6 @@ msgstr "Üzenet értesítő"
 msgid "{0} not available (offline mode)"
 msgstr "{0} nem elérhető (offline mód)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Nincs {0} azonosítójú elem a helyi adathalmazban. Nem lehet elem típust "
-"rendelni hozzá."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Pontok egy csomagjának lekérése innen: ''{0}''"
 
@@ -15943,6 +15966,9 @@ msgstr "Toulouse - Ortofotó tervek 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofotók 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16239,6 +16265,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (légifelvétel)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (útvonalak)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16425,12 +16454,18 @@ msgstr "Surrey Légifelmérés"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16690,6 +16725,16 @@ msgstr ""
 "kijelölt pontja körül párhuzamosba fordítja."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16738,15 +16783,13 @@ msgstr ""
 "Egy parancssort valósít meg és lehetővé teszi a saját parancsok létrehozását "
 "is. Nézd meg a hivatkozást a szabvány parancsokhoz (arc, circle stb.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Figyelem! Kísérleti!) Eszöz az adatok egyesítésére (összefésülésére)."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Vonalak hálózatát hozza létre."
 
@@ -17137,6 +17180,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Szimpla blokkokból készít teraszos házakat."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17470,61 +17518,9 @@ msgstr "Üzemeltető"
 msgid "Service Times"
 msgstr "Szolgáltatás ideje"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "napnyugta, napkelte"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Nyitva tartás"
 
-msgid "24/7"
-msgstr "éjjel-nappali"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "napkelte-napnyugta"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Kerekesszék"
 
@@ -20032,6 +20028,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Menedékház"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Használati jogok"
+
+msgid "Shower"
+msgstr "Zuhanyzó"
+
+msgid "seasonal"
+msgstr "szezonális"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "További leírás"
+
 # RV / Recreational Vehicle
 msgid "Caravan Site/RV Park"
 msgstr "Lakókocsipark/Lakóautó parkoló"
@@ -20144,12 +20167,6 @@ msgstr "Sörkert"
 msgid "Bar"
 msgstr "Bár"
 
-msgid "Night Club"
-msgstr "Éjszakai klub"
-
-msgid "Strip Club"
-msgstr "Sztriptízbár"
-
 msgid "Tourism"
 msgstr "Turizmus"
 
@@ -20202,9 +20219,6 @@ msgstr "város"
 msgid "region"
 msgstr "régió"
 
-msgid "Closer Description"
-msgstr "További leírás"
-
 msgid "Routes shown for:"
 msgstr "Útvonalakat tartalmaz:"
 
@@ -20328,12 +20342,6 @@ msgstr "Szauna"
 msgid "Horse Riding"
 msgstr "Lovaglás"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Bordélyház"
-
 msgid "Playground"
 msgstr "Játszótér"
 
@@ -20365,6 +20373,18 @@ msgstr "Horgászat"
 msgid "Private Swimming Pool"
 msgstr "Magán úszómedence"
 
+msgid "Night Club"
+msgstr "Éjszakai klub"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Sztriptízbár"
+
+msgid "Brothel"
+msgstr "Bordélyház"
+
 msgid "Culture"
 msgstr "Kultúra"
 
@@ -20674,11 +20694,17 @@ msgstr "Állatorvos"
 msgid "Toilets/Restrooms"
 msgstr "Mosdók/WC"
 
-msgid "Access rights"
-msgstr "Használati jogok"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "szezonális"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "öblítéses"
@@ -20707,24 +20733,12 @@ msgstr "guggoló"
 msgid "urinal"
 msgstr "vizelő"
 
-msgid "Shower"
-msgstr "Zuhanyzó"
-
 msgid "Post Box"
 msgstr "Postaláda"
 
 msgid "Collection times"
 msgstr "Begyűjtési időpontok"
 
-msgid "Mo-Sa 09:00"
-msgstr "Hétfőtől-szombatig 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "H-P 17:30; Sz 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "H-P 15:00, 19:00; Sz 15:10; V 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -21018,6 +21032,24 @@ msgstr "szivattyús"
 msgid "Count"
 msgstr "Darabszám"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Hírdetőoszlop"
 
@@ -21706,9 +21738,6 @@ msgstr "Világítótorony"
 msgid "Street Lamp"
 msgstr "Lámpaoszlop"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "H-P 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Mérőállomás"
 
@@ -22849,11 +22878,8 @@ msgstr "Újságárus bódé"
 msgid "Ticket"
 msgstr "Jegy"
 
-msgid "Department Store"
-msgstr "Áruház"
-
-msgid "Mall"
-msgstr "Bevásárlóközpont"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Drogéria"
@@ -22879,12 +22905,15 @@ msgstr "Egészségügyi ellátás"
 msgid "Jewellery"
 msgstr "Ékszerész"
 
-msgid "Gift/Souvenir"
-msgstr "Ajándékbolt"
-
 msgid "Erotic"
 msgstr "Szex shop"
 
+msgid "Department Store"
+msgstr "Áruház"
+
+msgid "Mall"
+msgstr "Bevásárlóközpont"
+
 msgid "Florist"
 msgstr "Virágüzlet"
 
@@ -22909,6 +22938,9 @@ msgstr "Hangszerbolt"
 msgid "Toys"
 msgstr "Játékbolt"
 
+msgid "Gift/Souvenir"
+msgstr "Ajándékbolt"
+
 msgid "Variety Store"
 msgstr "100 forintos bolt"
 
@@ -22924,6 +22956,9 @@ msgstr "Táska"
 msgid "Pet"
 msgstr "Kisállat"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Temetkezési vállalkozás"
 
@@ -24892,9 +24927,6 @@ msgstr "Érvényes utcanév nélküli lakcímek megtalálása és javítása."
 msgid "Address Edit"
 msgstr "Lakcím szerkesztés"
 
-msgid "Searching"
-msgstr "Keresés"
-
 msgid "Guess values for "
 msgstr "Vélt értékek "
 
@@ -25195,9 +25227,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -25863,13 +25892,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26499,6 +26521,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Lakcím"
 
@@ -27949,12 +28047,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27970,6 +28074,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30458,6 +30565,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terasz"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Nem lehet pontot helyezni a világon kívülre."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/hy.po b/i18n/po/hy.po
index 98b935a..ec3b0b7 100644
--- a/i18n/po/hy.po
+++ b/i18n/po/hy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-04-13 21:51+0000\n"
 "Last-Translator: Gev777 <Unknown>\n"
 "Language-Team: Armenian <hy at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:33+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:32+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: hy\n"
 
 msgid "Cancel"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ia.po b/i18n/po/ia.po
index ba65b4d..b48aa4b 100644
--- a/i18n/po/ia.po
+++ b/i18n/po/ia.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-08-29 01:02+0000\n"
 "Last-Translator: Emilio Sepulveda <Unknown>\n"
 "Language-Team: Interlingua <ia at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:47+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:45+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/id.po b/i18n/po/id.po
index 1acaa0b..e41a579 100644
--- a/i18n/po/id.po
+++ b/i18n/po/id.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-04-10 09:39+0000\n"
 "Last-Translator: Trisno Pamuji <tri.snowman at gmail.com>\n"
 "Language-Team: Indonesian <id at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:47+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:46+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: id\n"
 "X-Language: id_ID\n"
 
@@ -1453,6 +1453,15 @@ msgstr[0] ""
 "Terdapat lebih dari satu cara menggunakan node yang Anda pilih. Silahkan "
 "pilih cara yang juga anda inginkan."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Anda harus memilih satu atau lebih node untuk membagi jalur bundaran."
@@ -2223,17 +2232,11 @@ msgstr ""
 "Klik untuk memindahkan node/titik yang disorot. tekan Ctrl untuk menambahkan "
 "node/titik baru, atau Alt untuk menghapus."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Tidak dapat menempatkan sebuah node/titik di luar permukaan bumi."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Tidak dapat menghapus node/titik yang dirujuk oleh beragam objek"
-
 msgid "Cannot delete node that has tags"
 msgstr "Tidak dapat menghapus node/titik yang mempunyai tag"
 
@@ -2665,6 +2668,12 @@ msgstr "Seluruh anak dari objek yang cocok dengan ekspresi"
 msgid "all parents of objects matching the expression"
 msgstr "Seluruh objek utama yang cocok dengan ekspresi"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "anggota ke-n berhubungan dan/atau node ke-n dari jalan"
 
@@ -2690,6 +2699,14 @@ msgstr ""
 "Objek (dan seluruh way/titik node/titik dan anggota relasi yang ada di "
 "dalamnya) dalam area yang didownload"
 
+msgid "Searching"
+msgstr "Mencari"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Tidak ada yang cocok untuk \"{0}\""
 
@@ -4614,9 +4631,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "Jangan tunjukkan lagi (ingat pilihan)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "tidak lengkap"
 
@@ -8299,9 +8313,6 @@ msgstr "Relasi {0}"
 msgid "Object"
 msgstr "Objek"
 
-msgid "not present"
-msgstr "tidak saat ini"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -9290,6 +9301,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9387,6 +9401,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr "Lompat ke penanda sebelumnya"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Semua proyeksi didukung"
 
@@ -11510,9 +11531,6 @@ msgstr "Direktori indeks cache: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12649,35 +12667,53 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
-msgstr "Tidak diketahui keperluan: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipe tidak diketahui : {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "ekspresi anggota ilegal: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Kelompok Preset {1}/{0}"
 
-msgid "More information about this feature"
-msgstr "Informasi lebih tentang fitur ini"
+msgid "Preset group {0}"
+msgstr "Kelompok Preset {0}"
 
-msgid "Available roles"
-msgstr "Peran yang tersedia"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "role"
-msgstr "peran"
+msgid "Roles cannot appear more than once"
+msgstr "Peran tidak dapat muncul lebih dari sekali"
 
-msgid "count"
-msgstr "jumlah"
+msgid "Preset role element without parent"
+msgstr "Peran preset elemen tanpa induk"
 
-msgid "elements"
-msgstr "unsur"
+msgid "Preset sub element without parent"
+msgstr "Preset sub elemen tanpa induk"
 
-msgid "Optional Attributes:"
-msgstr "Atribut Tambahan:"
+msgid "Error parsing {0}: "
+msgstr "Kesalahan mengurai {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Pilih auto-increment dari {0} untuk bidang ini"
+msgid "Search preset"
+msgstr "Cari Preset"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Batalkan auto-increment untuk bidang ini"
+msgid "Show preset search dialog"
+msgstr "Tampilkan dialog pencarian preset"
+
+msgid "Search presets"
+msgstr "Cari preset"
+
+msgid "Presets"
+msgstr "Presets"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr "Tampilkan hanya berlaku pada pilihan"
+
+msgid "Search in tags"
+msgstr "Cari pada tag"
+
+msgid "Add toolbar button"
+msgstr ""
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12717,53 +12753,35 @@ msgstr ""
 "Tagging preset rusak \"{0}-{1}\" - nomor item dalam ''short_descriptions'' "
 "harus sama seperti di dalam \"values\""
 
-msgid "Unknown type: {0}"
-msgstr "Tipe tidak diketahui : {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Kelompok Preset {1}/{0}"
-
-msgid "Preset group {0}"
-msgstr "Kelompok Preset {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr "Peran tidak dapat muncul lebih dari sekali"
-
-msgid "Preset role element without parent"
-msgstr "Peran preset elemen tanpa induk"
-
-msgid "Preset sub element without parent"
-msgstr "Preset sub elemen tanpa induk"
+msgid "More information about this feature"
+msgstr "Informasi lebih tentang fitur ini"
 
-msgid "Error parsing {0}: "
-msgstr "Kesalahan mengurai {0}: "
+msgid "Optional Attributes:"
+msgstr "Atribut Tambahan:"
 
-msgid "Search preset"
-msgstr "Cari Preset"
+msgid "Unknown requisite: {0}"
+msgstr "Tidak diketahui keperluan: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Tampilkan dialog pencarian preset"
+msgid "Illegal member expression: {0}"
+msgstr "ekspresi anggota ilegal: {0}"
 
-msgid "Search presets"
-msgstr "Cari preset"
+msgid "Available roles"
+msgstr "Peran yang tersedia"
 
-msgid "Presets"
-msgstr "Presets"
+msgid "role"
+msgstr "peran"
 
-msgid "Search for objects by preset"
-msgstr ""
+msgid "count"
+msgstr "jumlah"
 
-msgid "Show only applicable to selection"
-msgstr "Tampilkan hanya berlaku pada pilihan"
+msgid "elements"
+msgstr "unsur"
 
-msgid "Search in tags"
-msgstr "Cari pada tag"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Pilih auto-increment dari {0} untuk bidang ini"
 
-msgid "Add toolbar button"
-msgstr ""
+msgid "Cancel auto-increment for this field"
+msgstr "Batalkan auto-increment untuk bidang ini"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13149,12 +13167,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Tidak primitif dengan id {0} pada dataset lokal. Tidak dapat menyimpulkan "
-"tipe primitif."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Mengambil paket node/titik dari ''{0}''"
 
@@ -15486,6 +15498,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15778,6 +15793,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15964,12 +15982,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16228,6 +16252,16 @@ msgstr ""
 "dari mereka di sekitar poros yang dipilih."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16269,12 +16303,10 @@ msgstr ""
 "Menerapkan baris perintah dan memungkinkan untuk membuat perintah Anda. "
 "Lihat link untuk perintah standar (busur, lingkaran dll.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16639,6 +16671,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Membuat rumah bertingkat keluar dari blok tunggal."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16971,59 +17008,9 @@ msgstr "Operator"
 msgid "Service Times"
 msgstr "Waktu layanan"
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Jam Buka"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Kursi roda"
 
@@ -19519,6 +19506,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Gubuk Pegunungan"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Lebih dekat deskripsi"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19630,12 +19644,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Pariwisata"
 
@@ -19687,9 +19695,6 @@ msgstr "kota"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Lebih dekat deskripsi"
-
 msgid "Routes shown for:"
 msgstr "Rute yang ditampilkan untuk"
 
@@ -19811,12 +19816,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Rumah Bordil"
-
 msgid "Playground"
 msgstr "Taman Bermain"
 
@@ -19848,6 +19847,18 @@ msgstr "Pemancingan"
 msgid "Private Swimming Pool"
 msgstr "kolam berenang pribadi"
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr "Rumah Bordil"
+
 msgid "Culture"
 msgstr "Budaya"
 
@@ -20155,10 +20166,16 @@ msgstr "Dokter Hewan"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -20188,24 +20205,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Kotak Pos"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20499,6 +20504,24 @@ msgstr "Penyedotan"
 msgid "Count"
 msgstr "Jumlah"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -21186,9 +21209,6 @@ msgstr "Mercusuar"
 msgid "Street Lamp"
 msgstr "Lampu Jalan"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Senin-Jumat 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22324,11 +22344,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Department Store"
-
-msgid "Mall"
-msgstr "Mall"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Chemist"
@@ -22354,12 +22371,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "Erotic"
 
+msgid "Department Store"
+msgstr "Department Store"
+
+msgid "Mall"
+msgstr "Mall"
+
 msgid "Florist"
 msgstr "penjual bunga"
 
@@ -22384,6 +22404,9 @@ msgstr "Instrumen Musik"
 msgid "Toys"
 msgstr "Mainan"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr "Berbagai Toko"
 
@@ -22399,6 +22422,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -24334,9 +24360,6 @@ msgstr "menemukan dan memperbaiki alamat dengan jalan (valid)."
 msgid "Address Edit"
 msgstr "mengedit jalan"
 
-msgid "Searching"
-msgstr "Mencari"
-
 msgid "Guess values for "
 msgstr "Nilai dugaan untuk "
 
@@ -24637,9 +24660,6 @@ msgstr "Prev OSMI bug"
 msgid "Next OSMI bug"
 msgstr "Selanjutnya bug OSM"
 
-msgid "Osm Inspector Bugs"
-msgstr "Osm inspector Bug"
-
 msgid "OSM Inspector Bugs"
 msgstr "Osm inspector Bug"
 
@@ -25387,13 +25407,6 @@ msgid "Auto sourcing"
 msgstr "Otomatis mencari"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26064,6 +26077,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -27591,12 +27680,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27612,6 +27707,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30181,6 +30279,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrace"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Tidak dapat menempatkan sebuah node/titik di luar permukaan bumi."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Telusuri"
 
diff --git a/i18n/po/is.po b/i18n/po/is.po
index 5491b45..7b89018 100644
--- a/i18n/po/is.po
+++ b/i18n/po/is.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-10-08 05:22+0000\n"
 "Last-Translator: Stefán Örvar Sigmundsson <stefan.orvar.sigmundsson at emi.is>\n"
 "Language-Team: Icelandic <is at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:46+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:45+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: is\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1377,6 +1377,15 @@ msgstr[1] ""
 "Það er meira en einn vegur að nota hnútana sem þú valdir. Veldu einnig "
 "veginn sem þú vilt skipta."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Þú verður að velja tvo eða fleiri hnúta til að skipta hringlaga veg."
 
@@ -2095,17 +2104,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2517,6 +2520,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2538,6 +2547,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4378,9 +4395,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "óklárað"
 
@@ -7879,9 +7893,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8785,6 +8796,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8884,6 +8898,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10820,9 +10841,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11895,34 +11913,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Frekari upplýsingar um þessa forstillingu"
+msgid "Preset group {0}"
+msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Valfrjáls eigind:"
+msgid "Error parsing {0}: "
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr "Forstillingar"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11953,52 +11989,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Frekari upplýsingar um þessa forstillingu"
 
-msgid "Preset sub element without parent"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Valfrjáls eigind:"
 
-msgid "Error parsing {0}: "
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Forstillingar"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12347,10 +12365,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14501,6 +14515,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14793,6 +14810,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14979,12 +14999,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15239,6 +15265,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15272,12 +15308,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15585,6 +15619,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15900,59 +15939,9 @@ msgstr "Rekstraraðili"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Opnunartími"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18439,6 +18428,33 @@ msgstr "Farfuglaheimili"
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Nánari lýsing"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18550,12 +18566,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Ferðamennska"
 
@@ -18607,9 +18617,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr "Nánari lýsing"
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18731,12 +18738,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Leikvöllur"
 
@@ -18768,6 +18769,18 @@ msgstr "Fiskveiðar"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19075,10 +19088,16 @@ msgstr "Dýralæknir"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19108,24 +19127,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Póstkassi"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19419,6 +19426,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20106,9 +20131,6 @@ msgstr "Viti"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21244,10 +21266,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21274,10 +21293,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21304,6 +21326,9 @@ msgstr ""
 msgid "Toys"
 msgstr "Dótabúð"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21319,6 +21344,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23235,9 +23263,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23531,9 +23556,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24188,13 +24210,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24820,6 +24835,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26253,12 +26344,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26274,6 +26371,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28733,6 +28833,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/it.po b/i18n/po/it.po
index deca5a0..4ca3535 100644
--- a/i18n/po/it.po
+++ b/i18n/po/it.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm 20081003\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-09-21 07:50+0000\n"
 "Last-Translator: Don-vip <Unknown>\n"
 "Language-Team: Italian <talk-it at lists.openstreetmap.org>\n"
@@ -12,8 +12,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:48+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:46+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: it\n"
 "X-Language: it_IT\n"
 "X-Source-Language: en\n"
@@ -1493,6 +1493,15 @@ msgstr[1] ""
 "C''è più di un percorso che utilizza i nodi selezionati. Selezionare anche "
 "il percorso."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Seleziona due o più nodi per dividere un percorso circolare."
 
@@ -2301,17 +2310,11 @@ msgstr ""
 "Clicca per spostare il nodo evidenziato. Tenere premuto Ctrl per aggiungere "
 "nuovi nodi, oppure Alt per eliminare."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Impossibile posizionare un nodo al di fuori dei confini della Terra."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Aggiungi un nuovo nodo al percorso"
 msgstr[1] "Aggiungi un nuovo nodo a {0} percorsi"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Impossibile eliminare il nodo a cui più oggetti fanno riferimento"
-
 msgid "Cannot delete node that has tags"
 msgstr "Impossibile eliminare il nodo che contiene etichette"
 
@@ -2764,6 +2767,12 @@ msgstr "tutti i figli degli oggetti che soddisfano l''espressione"
 msgid "all parents of objects matching the expression"
 msgstr "tutti i genitori degli oggetti che soddisfano l''espressione"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-esimo membro della relazione e/o n-esimo nodo del percorso"
 
@@ -2790,6 +2799,14 @@ msgstr ""
 "oggetti (e tutti i loro nodi di percorso / membri della relazione) "
 "nell''area scaricata"
 
+msgid "Searching"
+msgstr "Ricerca in corso"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Nessuna corrispondenza trovata per ''{0}''"
 
@@ -4822,9 +4839,6 @@ msgstr "Non mostrare di nuovo (questa sessione)"
 msgid "Do not show again (remembers choice)"
 msgstr "Non visualizzare nuovamente (ricorda la scelta)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incompleto"
 
@@ -8731,9 +8745,6 @@ msgstr "Relazione {0}"
 msgid "Object"
 msgstr "Oggetto"
 
-msgid "not present"
-msgstr "non presente"
-
 msgid "Changeset comment"
 msgstr "Commento al gruppo di modifiche"
 
@@ -9805,6 +9816,9 @@ msgstr "Scala pixel: {0}"
 msgid "Best zoom: {0}"
 msgstr "Migliore ingrandimento: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Statistiche cache: {0}"
 
@@ -9906,6 +9920,13 @@ msgstr "Contrassegno precedente"
 msgid "Jump to previous marker"
 msgstr "Vai al contrassegno precedente"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Sono supportate tutte le proiezioni"
 
@@ -12126,9 +12147,6 @@ msgstr "Cartella di cache per i tasselli: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Dimensione massima della cache sul disco (per le immagini) in MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Massimo numero di oggetti nella memoria cache: "
-
 msgid "Tiles zoom offset:"
 msgstr "Offset di zoom delle tile:"
 
@@ -13332,35 +13350,53 @@ msgstr "Cambia etichette"
 msgid "Add or remove toolbar button"
 msgstr "Aggiungi o rimuovi pulsante barra degli strumenti"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisito sconosciuto: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipo sconosciuto: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Espessione non valida del mebro: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Gruppo preimpostato {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Ulteriori informazioni su questa caratteristica"
+msgid "Preset group {0}"
+msgstr "Gruppo preimpostato {0}"
 
-msgid "Available roles"
-msgstr "Ruoli disponibili"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Il riferimento {0} è utilizzato prima che sia definito"
 
-msgid "role"
-msgstr "ruolo"
+msgid "Roles cannot appear more than once"
+msgstr "I ruoli non posso comparire più di una volta"
 
-msgid "count"
-msgstr "conteggio"
+msgid "Preset role element without parent"
+msgstr "Elemento ruolo preimpostato senza genitori"
 
-msgid "elements"
-msgstr "elementi"
+msgid "Preset sub element without parent"
+msgstr "Sotto-elemento preimpostato senza genitori"
 
-msgid "Optional Attributes:"
-msgstr "Attributi opzionali:"
+msgid "Error parsing {0}: "
+msgstr "Impossibile leggere {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Seleziona l''incremento automatico di {0} per questo campo"
+msgid "Search preset"
+msgstr "Ricerca preimpostazione"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Anulla l''incremento automatico per questa voce"
+msgid "Show preset search dialog"
+msgstr "Visualizza la finestra di ricerca delle preimpostazioni"
+
+msgid "Search presets"
+msgstr "Ricerca preimpostazioni"
+
+msgid "Presets"
+msgstr "Preimpostazioni"
+
+msgid "Search for objects by preset"
+msgstr "Ricerca oggetti da preimpostazioni"
+
+msgid "Show only applicable to selection"
+msgstr "Visualizza solamente per la selezione"
+
+msgid "Search in tags"
+msgstr "Cerca nelle etichette"
+
+msgid "Add toolbar button"
+msgstr "Aggiungi pulsante barra degli strumenti"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13400,53 +13436,35 @@ msgstr ""
 "Etichette preimpostate \"{0}-{1}\" non coerenti - il numero di elmenti in "
 "''short_descriptions'' deve essere lo stesso di ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipo sconosciuto: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Gruppo preimpostato {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Gruppo preimpostato {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Il riferimento {0} è utilizzato prima che sia definito"
-
-msgid "Roles cannot appear more than once"
-msgstr "I ruoli non posso comparire più di una volta"
-
-msgid "Preset role element without parent"
-msgstr "Elemento ruolo preimpostato senza genitori"
-
-msgid "Preset sub element without parent"
-msgstr "Sotto-elemento preimpostato senza genitori"
+msgid "More information about this feature"
+msgstr "Ulteriori informazioni su questa caratteristica"
 
-msgid "Error parsing {0}: "
-msgstr "Impossibile leggere {0}: "
+msgid "Optional Attributes:"
+msgstr "Attributi opzionali:"
 
-msgid "Search preset"
-msgstr "Ricerca preimpostazione"
+msgid "Unknown requisite: {0}"
+msgstr "Requisito sconosciuto: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Visualizza la finestra di ricerca delle preimpostazioni"
+msgid "Illegal member expression: {0}"
+msgstr "Espessione non valida del mebro: {0}"
 
-msgid "Search presets"
-msgstr "Ricerca preimpostazioni"
+msgid "Available roles"
+msgstr "Ruoli disponibili"
 
-msgid "Presets"
-msgstr "Preimpostazioni"
+msgid "role"
+msgstr "ruolo"
 
-msgid "Search for objects by preset"
-msgstr "Ricerca oggetti da preimpostazioni"
+msgid "count"
+msgstr "conteggio"
 
-msgid "Show only applicable to selection"
-msgstr "Visualizza solamente per la selezione"
+msgid "elements"
+msgstr "elementi"
 
-msgid "Search in tags"
-msgstr "Cerca nelle etichette"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Seleziona l''incremento automatico di {0} per questo campo"
 
-msgid "Add toolbar button"
-msgstr "Aggiungi pulsante barra degli strumenti"
+msgid "Cancel auto-increment for this field"
+msgstr "Anulla l''incremento automatico per questa voce"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13865,12 +13883,6 @@ msgstr "Notificatore messaggi"
 msgid "{0} not available (offline mode)"
 msgstr "{0} non disponibile (modalità non in linea)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Nessuna primitiva con id {0} nell''insieme di dati locale. Impossibile "
-"dedurre il tipo di primitiva."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Prelevamento di un insieme di nodi da ''''{0}''''"
 
@@ -16390,6 +16402,9 @@ msgstr "Toulouse - Ortofoto 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofoto 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16685,6 +16700,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16871,12 +16889,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -17136,6 +17160,16 @@ msgstr ""
 "di loro attorno ad un punto scelto."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -17186,16 +17220,12 @@ msgstr ""
 "personalizzati. Consulta il collegamento per i comandi standard (arc, circle "
 "etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Fornisce la biblioteca Commons Imaging. Non prevista per essere installata "
-"direttamente dagli utenti, ma piuttosto come una dipendenza per altri plugin."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Attenzione: Sperimentale!) Strumento per fondere (unire) i dati."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Crea un reticolo di ways"
 
@@ -17596,6 +17626,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Genera delle case a schiera da singoli blocchi."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17932,63 +17967,9 @@ msgstr "Operatore"
 msgid "Service Times"
 msgstr "Orari celebrazioni"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "alba,tramonto"
-
-msgid "Su 09:30,11:00"
-msgstr "Do 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Do,Festività 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Do 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Ve 08:00-18:00; Apr 10-15 chiuso; Giu 07:00-20:00; Ago chiuso; Dic 24 08:00-"
-"24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "settimana 1-53/2 Ve 09:00-12:00; settimana 2-52/2 Me 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Orario di apertura"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sab-Dom 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Lu-Ve 08:30-20:00; Sa,Do 08:00-15:00; Festività chiuso"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Lu-Ve 08:30-20:00, Ma-Do 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Lu-Do 08:00-18:00; Apr 10-15 chiuso; Giu 08:00-14:00; Ago chiuso; Dic 25 "
-"chiuso"
-
-msgid "sunrise-sunset"
-msgstr "alba-tramonto"
-
-msgid "Su 10:00+"
-msgstr "Do 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Sedie a rotelle"
 
@@ -20512,6 +20493,33 @@ msgstr "Ostello"
 msgid "Alpine Hut"
 msgstr "Rifugio alpino"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Diritti di accesso"
+
+msgid "Shower"
+msgstr "Docce"
+
+msgid "seasonal"
+msgstr "stagionale"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Descrizione più specifica"
+
 msgid "Caravan Site/RV Park"
 msgstr "Area camper/Camper service"
 
@@ -20623,12 +20631,6 @@ msgstr "Beer garden"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Night Club"
-
-msgid "Strip Club"
-msgstr "Strip club"
-
 msgid "Tourism"
 msgstr "Turismo"
 
@@ -20680,9 +20682,6 @@ msgstr "città"
 msgid "region"
 msgstr "provincia"
 
-msgid "Closer Description"
-msgstr "Descrizione più specifica"
-
 msgid "Routes shown for:"
 msgstr "Itinerari segnalati per:"
 
@@ -20805,12 +20804,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Corse di cavalli"
 
-msgid "Casino"
-msgstr "Casinò"
-
-msgid "Brothel"
-msgstr "Bordello"
-
 msgid "Playground"
 msgstr "Parco giochi"
 
@@ -20842,6 +20835,18 @@ msgstr "Riserva di pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina privata"
 
+msgid "Night Club"
+msgstr "Night Club"
+
+msgid "Casino"
+msgstr "Casinò"
+
+msgid "Strip Club"
+msgstr "Strip club"
+
+msgid "Brothel"
+msgstr "Bordello"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -21149,11 +21154,17 @@ msgstr "Veterinario"
 msgid "Toilets/Restrooms"
 msgstr "Bagni"
 
-msgid "Access rights"
-msgstr "Diritti di accesso"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "stagionale"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "sciacquone"
@@ -21182,24 +21193,12 @@ msgstr "accovacciata"
 msgid "urinal"
 msgstr "orinatoio"
 
-msgid "Shower"
-msgstr "Docce"
-
 msgid "Post Box"
 msgstr "Cassetta Postale"
 
 msgid "Collection times"
 msgstr "Orari di raccolta"
 
-msgid "Mo-Sa 09:00"
-msgstr "Lun-Sab 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Lun-Ven 17:30; Sab 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Lun-Ven 15:00,19:00; Sab 15:10; Dom 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -21493,6 +21492,24 @@ msgstr "portata"
 msgid "Count"
 msgstr "Numero di idranti"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Colonna pubblicitaria"
 
@@ -22180,9 +22197,6 @@ msgstr "Faro"
 msgid "Street Lamp"
 msgstr "Lampione"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Lu-Ve 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Stazione di monitoraggio"
 
@@ -23321,11 +23335,8 @@ msgstr "Distributore giornali"
 msgid "Ticket"
 msgstr "Biglietto"
 
-msgid "Department Store"
-msgstr "Grande magazzino"
-
-msgid "Mall"
-msgstr "Centro commerciale"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Articoli di pulizia e bellezza"
@@ -23351,12 +23362,15 @@ msgstr "Forniture Mediche"
 msgid "Jewellery"
 msgstr "Gioielleria"
 
-msgid "Gift/Souvenir"
-msgstr "Regali"
-
 msgid "Erotic"
 msgstr "Sexy shop"
 
+msgid "Department Store"
+msgstr "Grande magazzino"
+
+msgid "Mall"
+msgstr "Centro commerciale"
+
 msgid "Florist"
 msgstr "Fiorista"
 
@@ -23381,6 +23395,9 @@ msgstr "Strumenti musicali"
 msgid "Toys"
 msgstr "Giocattoli"
 
+msgid "Gift/Souvenir"
+msgstr "Regali"
+
 msgid "Variety Store"
 msgstr "Articoli a basso costo (\"tutto a ...\")"
 
@@ -23396,6 +23413,9 @@ msgstr "Borsa"
 msgid "Pet"
 msgstr "Animale"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Pompe funebri"
 
@@ -25380,9 +25400,6 @@ msgstr "Cerca e correggi gli indirizzi senza strada (valida)."
 msgid "Address Edit"
 msgstr "Modifica indirizzo"
 
-msgid "Searching"
-msgstr "Ricerca in corso"
-
 msgid "Guess values for "
 msgstr "Valori possibili per "
 
@@ -25689,9 +25706,6 @@ msgstr "Bug OSMI precedente"
 msgid "Next OSMI bug"
 msgstr "Bug OSMI successivo"
 
-msgid "Osm Inspector Bugs"
-msgstr "Bug Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Bug OSM Inspector"
 
@@ -26496,20 +26510,6 @@ msgid "Auto sourcing"
 msgstr "Sorgente auto-determinata"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"L''estensione cadastre-fr utilizzava la scorciatoia F11 per il "
-"trascinamento,\n"
-"che è ora assegnata alla commutazione della visualizzazione a schermo "
-"intero.\n"
-"La nuova scorciatoia per il trascinamento è F10, ma volendo si può "
-"modificare\n"
-"nelle impostazioni delle scorciatoie."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -27205,6 +27205,82 @@ msgstr "Nessuna selezione"
 msgid "Invalid reference or subject"
 msgstr "Riferimento all''oggetto non valido"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Indirizzo"
 
@@ -28744,12 +28820,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -28765,6 +28847,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -31393,6 +31478,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Case a schiera"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Impossibile posizionare un nodo al di fuori dei confini della Terra."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Esplora"
 
diff --git a/i18n/po/ja.po b/i18n/po/ja.po
index 4d98e81..a6b60ba 100644
--- a/i18n/po/ja.po
+++ b/i18n/po/ja.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-09-27 14:09+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-26 06:42+0000\n"
 "Last-Translator: fujimoto <fujimoto at internet.ne.jp>\n"
 "Language-Team: Japanese <tr at openstreetmap.jp>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:48+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:47+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "X-Poedit-Country: JAPAN\n"
 "Language: ja\n"
 "X-Poedit-Language: Japanese\n"
@@ -1379,6 +1379,15 @@ msgid_plural ""
 "way also."
 msgstr[0] "選択されたノードは2つ以上のウェイで使われています。ウェイも選択してください。"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "{0}の履歴をどのウェイ区間で再利用しますか?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "区間 {0}:{1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "円形につながったウェイの分割には、二つ以上のノードを選択する必要があります。"
 
@@ -2102,16 +2111,10 @@ msgid ""
 "delete."
 msgstr "クリックで選択されたノードを移動。Ctrlを押しながらで新しいノードの作成、Altで削除。"
 
-msgid "Cannot place a node outside of the world."
-msgstr "世界地図の範囲外にノードは置けません"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "{0}本のウェイに新しいノードを追加"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "複数のオブジェクトから参照されているのでノードを削除できません"
-
 msgid "Cannot delete node that has tags"
 msgstr "タグのあるノードは削除できません"
 
@@ -2355,13 +2358,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "検索に不完全および削除済みオブジェクトも含める。"
 
 msgid "standard"
-msgstr ""
+msgstr "標準"
 
 msgid "regular expression"
 msgstr "正規表現検索"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS セレクタ"
 
 msgid "add toolbar button"
 msgstr "ツールバーボタンを追加"
@@ -2532,6 +2535,12 @@ msgstr "条件に当てはまるすべての子要素"
 msgid "all parents of objects matching the expression"
 msgstr "条件に当てはまるすべての親要素"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "<i>stop</i> ロールをメンバーに含むリレーション"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "リレーションの <i>stop</i> ロールのメンバーであるオブジェクト"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "リレーションのn番目のメンバーやウェイのn番目のノード"
 
@@ -2553,6 +2562,13 @@ msgstr "ダウンロード範囲内のオブジェクト"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "ダウンロード範囲内のオブジェクト(と全てのウェイのノード、リレーションのメンバー)"
 
+msgid "Searching"
+msgstr "検索中"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "{0}件のオブジェクトを検索中"
+
 msgid "No match found for ''{0}''"
 msgstr "''{0}'' にマッチするものが見つかりません"
 
@@ -2582,7 +2598,7 @@ msgstr "RX"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -2634,7 +2650,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "予期しないトークンです。{0}が必要な場所に{1}がありました。"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "MapCSS セレクタの解析に失敗しました"
 
 msgid "Unexpected token: {0}"
 msgstr "予想外のトークン: {0}"
@@ -4398,9 +4414,6 @@ msgstr "(このセッションで)再度表示しない"
 msgid "Do not show again (remembers choice)"
 msgstr "次回から表示しない"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "不完全"
 
@@ -6357,7 +6370,7 @@ msgid ""
 msgstr ""
 
 msgid "Ranges of object IDs are specified with a hyphen, for instance: {0}"
-msgstr ""
+msgstr "オブジェクト ID の範囲は、 {0} のようにハイフンで指定します"
 
 msgid ""
 "Invalid ID list specified\n"
@@ -7946,9 +7959,6 @@ msgstr "リレーション {0}"
 msgid "Object"
 msgstr "オブジェクト"
 
-msgid "not present"
-msgstr "存在しません"
-
 msgid "Changeset comment"
 msgstr "変更セットのコメント"
 
@@ -8882,6 +8892,9 @@ msgstr "ピクセルの倍率: {0}"
 msgid "Best zoom: {0}"
 msgstr "最適倍率: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "推定キャッシュサイズ: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "キャッシュ状況: {0}"
 
@@ -8960,7 +8973,7 @@ msgid "Imagery fade"
 msgstr "画像の混合色"
 
 msgid "Unsupported imagery type: {0}"
-msgstr ""
+msgstr "サポートされていない画像種別: {0}"
 
 msgid "ERROR"
 msgstr "ERROR"
@@ -8977,6 +8990,13 @@ msgstr "前のマーカー"
 msgid "Jump to previous marker"
 msgstr "前のマーカーにジャンプ"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "投影法はすべてサポートされています"
 
@@ -10942,10 +10962,10 @@ msgid "{0} cache, total cache size: {1} bytes"
 msgstr ""
 
 msgid "Cache name"
-msgstr ""
+msgstr "キャッシュ名"
 
 msgid "Object Count"
-msgstr ""
+msgstr "オブジェクト数"
 
 msgid "imagery fade"
 msgstr "画像の混合色"
@@ -10971,9 +10991,6 @@ msgstr "タイルキャッシュの保存フォルダ: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "ディスクキャッシュの最大サイズ(画像あたり、MB): "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "メモリキャッシュの最大オブジェクト数 "
-
 msgid "Tiles zoom offset:"
 msgstr "タイルズームオフセット:"
 
@@ -12070,35 +12087,53 @@ msgstr "タグの変更"
 msgid "Add or remove toolbar button"
 msgstr "ツールバーボタンを追加/削除"
 
-msgid "Unknown requisite: {0}"
-msgstr "不明な必要条件: {0}"
+msgid "Unknown type: {0}"
+msgstr "不明なタイプ: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "メンバーの式が不正です: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "プリセットグループ {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "この地物・機能の詳細情報"
+msgid "Preset group {0}"
+msgstr "プリセットグループ {0}"
 
-msgid "Available roles"
-msgstr "利用可能なロール"
+msgid "Reference {0} is being used before it was defined"
+msgstr "参照 {0} が定義される前に使用されています"
 
-msgid "role"
-msgstr "ロール"
+msgid "Roles cannot appear more than once"
+msgstr "ロールは2つ以上つけることはできません"
 
-msgid "count"
-msgstr "件数"
+msgid "Preset role element without parent"
+msgstr "親の無いロール要素をプリセット"
 
-msgid "elements"
-msgstr "エレメント"
+msgid "Preset sub element without parent"
+msgstr "親の無いサブ要素をプリセット"
 
-msgid "Optional Attributes:"
-msgstr "オプションの属性:"
+msgid "Error parsing {0}: "
+msgstr "走査時にエラー: {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "この欄に{0}の自動インクリメントを選択"
+msgid "Search preset"
+msgstr "プリセットを検索"
 
-msgid "Cancel auto-increment for this field"
-msgstr "この欄の自動インクリメントを取り消し"
+msgid "Show preset search dialog"
+msgstr "プリセット検索ダイアログを表示"
+
+msgid "Search presets"
+msgstr "プリセットを検索"
+
+msgid "Presets"
+msgstr "プリセット"
+
+msgid "Search for objects by preset"
+msgstr "プリセットでオブジェクトを検索"
+
+msgid "Show only applicable to selection"
+msgstr "選択範囲に適用可能なもののみ表示"
+
+msgid "Search in tags"
+msgstr "タグ内検索"
+
+msgid "Add toolbar button"
+msgstr "ツールバーボタンを追加"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12136,53 +12171,35 @@ msgstr ""
 "\"{0}-{1}\" プリセットのタグ付けが壊れています - ''short_descriptions'' の中の項目数は ''values'' "
 "と同じである必要があります"
 
-msgid "Unknown type: {0}"
-msgstr "不明なタイプ: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "プリセットグループ {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "プリセットグループ {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "参照 {0} が定義される前に使用されています"
-
-msgid "Roles cannot appear more than once"
-msgstr "ロールは2つ以上つけることはできません"
-
-msgid "Preset role element without parent"
-msgstr "親の無いロール要素をプリセット"
-
-msgid "Preset sub element without parent"
-msgstr "親の無いサブ要素をプリセット"
+msgid "More information about this feature"
+msgstr "この地物・機能の詳細情報"
 
-msgid "Error parsing {0}: "
-msgstr "走査時にエラー: {0}: "
+msgid "Optional Attributes:"
+msgstr "オプションの属性:"
 
-msgid "Search preset"
-msgstr "プリセットを検索"
+msgid "Unknown requisite: {0}"
+msgstr "不明な必要条件: {0}"
 
-msgid "Show preset search dialog"
-msgstr "プリセット検索ダイアログを表示"
+msgid "Illegal member expression: {0}"
+msgstr "メンバーの式が不正です: {0}"
 
-msgid "Search presets"
-msgstr "プリセットを検索"
+msgid "Available roles"
+msgstr "利用可能なロール"
 
-msgid "Presets"
-msgstr "プリセット"
+msgid "role"
+msgstr "ロール"
 
-msgid "Search for objects by preset"
-msgstr "プリセットでオブジェクトを検索"
+msgid "count"
+msgstr "件数"
 
-msgid "Show only applicable to selection"
-msgstr "選択範囲に適用可能なもののみ表示"
+msgid "elements"
+msgstr "エレメント"
 
-msgid "Search in tags"
-msgstr "タグ内検索"
+msgid "Select auto-increment of {0} for this field"
+msgstr "この欄に{0}の自動インクリメントを選択"
 
-msgid "Add toolbar button"
-msgstr "ツールバーボタンを追加"
+msgid "Cancel auto-increment for this field"
+msgstr "この欄の自動インクリメントを取り消し"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -12533,10 +12550,6 @@ msgstr "メッセージ通知"
 msgid "{0} not available (offline mode)"
 msgstr "{0}は使用できません(オフラインモード)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr "ID {0} のプリミティブはローカルのデータセット内にはありません。プリミティブ種別が不明です。"
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "''{0}'' からノードのパッケージを取得中"
 
@@ -14618,7 +14631,7 @@ msgid "SPW(allonie) 2009 aerial imagery"
 msgstr "SPW(allonie) 2009 aerial imagery"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
-msgstr ""
+msgstr "cadastre: for names and house numbers only, bad geometry"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Mapa de Setores Urbanos"
@@ -14749,6 +14762,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Orthophotos 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15045,6 +15061,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (aerial image)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (aerial image)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -15231,12 +15250,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -15491,6 +15516,16 @@ msgid ""
 msgstr "選択されたウェイ区間の組を、そのひとつを選ばれたピボットのまわりで回転させることで平行にします。"
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15530,14 +15565,12 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "コマンドラインを実装しており、自分のコマンドを作成することができます。標準コマンド(arc, circle,他)はリンクを参照。"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(警告: 試験中!)データの合成(マージ)用のツールです。"
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "ウェイのグリッドを作成。"
 
@@ -15862,6 +15895,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "1つのブロックからテラスハウスを作成する"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16184,61 +16222,9 @@ msgstr "運営者"
 msgid "Service Times"
 msgstr "参拝時間"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "sunset,sunrise"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "営業時間"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "sunrise-sunset"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "車いす"
 
@@ -18727,6 +18713,33 @@ msgstr "簡易宿泊所"
 msgid "Alpine Hut"
 msgstr "山小屋"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "利用者"
+
+msgid "Shower"
+msgstr "公衆浴場・シャワー"
+
+msgid "seasonal"
+msgstr "季節限定"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "詳細な説明"
+
 msgid "Caravan Site/RV Park"
 msgstr "キャンプ場/RVパーク"
 
@@ -18838,12 +18851,6 @@ msgstr "ビアガーデン"
 msgid "Bar"
 msgstr "バー"
 
-msgid "Night Club"
-msgstr "ナイトクラブ"
-
-msgid "Strip Club"
-msgstr "ストリップクラブ"
-
 msgid "Tourism"
 msgstr "観光"
 
@@ -18895,9 +18902,6 @@ msgstr "市区"
 msgid "region"
 msgstr "広域"
 
-msgid "Closer Description"
-msgstr "詳細な説明"
-
 msgid "Routes shown for:"
 msgstr "ルート案内:"
 
@@ -19019,12 +19023,6 @@ msgstr "サウナ"
 msgid "Horse Riding"
 msgstr "乗馬場"
 
-msgid "Casino"
-msgstr "火事の"
-
-msgid "Brothel"
-msgstr "売春宿"
-
 msgid "Playground"
 msgstr "児童公園"
 
@@ -19056,6 +19054,18 @@ msgstr "つり場"
 msgid "Private Swimming Pool"
 msgstr "専用の遊泳プール"
 
+msgid "Night Club"
+msgstr "ナイトクラブ"
+
+msgid "Casino"
+msgstr "火事の"
+
+msgid "Strip Club"
+msgstr "ストリップクラブ"
+
+msgid "Brothel"
+msgstr "売春宿"
+
 msgid "Culture"
 msgstr "文化"
 
@@ -19363,11 +19373,17 @@ msgstr "動物病院"
 msgid "Toilets/Restrooms"
 msgstr "トイレ"
 
-msgid "Access rights"
-msgstr "利用者"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "季節限定"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "水洗"
@@ -19396,24 +19412,12 @@ msgstr "和式"
 msgid "urinal"
 msgstr "小便器"
 
-msgid "Shower"
-msgstr "公衆浴場・シャワー"
-
 msgid "Post Box"
 msgstr "郵便ポスト"
 
 msgid "Collection times"
 msgstr "収集時刻"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19707,6 +19711,24 @@ msgstr "吸い上げ"
 msgid "Count"
 msgstr "本数"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "広告枠"
 
@@ -20394,9 +20416,6 @@ msgstr "灯台"
 msgid "Street Lamp"
 msgstr "街灯"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "観測所"
 
@@ -21532,11 +21551,8 @@ msgstr "新聞販売店"
 msgid "Ticket"
 msgstr "チケット"
 
-msgid "Department Store"
-msgstr "百貨店"
-
-msgid "Mall"
-msgstr "ショッピングセンター"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "薬品・化粧品店"
@@ -21562,12 +21578,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr "宝石店"
 
-msgid "Gift/Souvenir"
-msgstr "ギフト・おみやげ店"
-
 msgid "Erotic"
 msgstr "成人娯楽店"
 
+msgid "Department Store"
+msgstr "百貨店"
+
+msgid "Mall"
+msgstr "ショッピングセンター"
+
 msgid "Florist"
 msgstr "生花店"
 
@@ -21592,6 +21611,9 @@ msgstr "楽器店"
 msgid "Toys"
 msgstr "玩具店"
 
+msgid "Gift/Souvenir"
+msgstr "ギフト・おみやげ店"
+
 msgid "Variety Store"
 msgstr "雑貨店"
 
@@ -21607,6 +21629,9 @@ msgstr "かばん店"
 msgid "Pet"
 msgstr "ペット店"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "葬儀社"
 
@@ -23533,9 +23558,6 @@ msgstr "(有効な)通り名のない住所を検索して修正します。"
 msgid "Address Edit"
 msgstr "住所の編集"
 
-msgid "Searching"
-msgstr "検索中"
-
 msgid "Guess values for "
 msgstr "値を推測: "
 
@@ -23830,9 +23852,6 @@ msgstr "前のOSMIのバグ"
 msgid "Next OSMI bug"
 msgstr "次のOSMIのバグ"
 
-msgid "Osm Inspector Bugs"
-msgstr "OSM Inspector のバグ"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector Bugs"
 
@@ -24576,17 +24595,6 @@ msgid "Auto sourcing"
 msgstr "自動ソーシング"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"cadastre-frプラグインは利用にショートカットキーとしてF11を使っていましたが、\n"
-"このキーはフルスクリーン表示の切り替えに割り当てられました。\n"
-"新しい利用キーはF10ですが、このキーは必要に応じてショートカットの\n"
-"設定から変更できます。"
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25241,6 +25249,82 @@ msgstr "選択されていません"
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "住所"
 
@@ -26707,12 +26791,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26728,6 +26818,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29216,6 +29309,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "テラスハウス"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "世界地図の範囲外にノードは置けません"
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "閲覧"
 
diff --git a/i18n/po/ka.po b/i18n/po/ka.po
index e5c124c..93dc0ec 100644
--- a/i18n/po/ka.po
+++ b/i18n/po/ka.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-12-16 00:14+0000\n"
 "Last-Translator: datogogishvili <Unknown>\n"
 "Language-Team: Georgian <ka at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:42+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:41+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ka\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1368,6 +1368,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2086,17 +2095,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2508,6 +2511,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2529,6 +2538,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4364,9 +4381,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7856,9 +7870,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8755,6 +8766,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8854,6 +8868,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10784,9 +10805,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11855,34 +11873,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11913,52 +11949,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12305,10 +12323,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14455,6 +14469,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14747,6 +14764,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14933,12 +14953,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15193,6 +15219,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15226,12 +15262,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15538,6 +15572,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15853,59 +15892,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18392,6 +18381,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18503,12 +18519,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18560,9 +18570,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18684,12 +18691,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18721,6 +18722,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19028,10 +19041,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19061,24 +19080,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19372,6 +19379,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20059,9 +20084,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21197,10 +21219,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21227,10 +21246,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21257,6 +21279,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21272,6 +21297,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23188,9 +23216,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23484,9 +23509,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24141,13 +24163,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24773,6 +24788,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26206,12 +26297,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26227,6 +26324,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28686,6 +28786,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/km.po b/i18n/po/km.po
index 9fd96e3..701b914 100644
--- a/i18n/po/km.po
+++ b/i18n/po/km.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-01-27 10:25+0000\n"
 "Last-Translator: Sophea Sok <sksophea at gmail.com>\n"
 "Language-Team: Khmer <km at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:49+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:47+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1444,6 +1444,15 @@ msgstr[0] ""
 "មាន​ផ្លូវ​ច្រើន​ជាង​មួយ​ប្រើ​តំណ​ដែល​អ្នក​បាន​ជ្រើស។ "
 "សូម​ជ្រើស​ជ្រើស​ផ្លូវ​ផង។"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "អ្នក​ត្រូវតែ​ជ្រើស​តំណ​ពីរ ឬ​ច្រើន​ដើម្បី​បំបែក​ផ្លូវ​រង្វង់​មូល។"
 
@@ -2212,16 +2221,10 @@ msgstr ""
 "ចុច​ដើម្បី​ផ្លាស់ទី​តំណ​ដែល​បាន​រំលេច។ សង្កត់ Ctrl ដើម្បី​បន្ថែម​តំណ​ថ្មី, "
 "ឬ​សង្កត់ Alt ដើម្បី​លុប។"
 
-msgid "Cannot place a node outside of the world."
-msgstr "មិន​អាច​ដាក់​តំណ​នៅ​ក្រៅ​ផែនដី​បានទេ។"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "បន្ថែម​តំណ​ថ្មី​ទៅ​ផ្លូវ {0}"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "មិន​អាច​លុប​តំណ​ដែល​បាន​យោង​ដោយ​វត្ថុ​ច្រើន"
-
 msgid "Cannot delete node that has tags"
 msgstr "មិន​អាច​លុប​តំណ​ដែល​មាន​ស្លាក"
 
@@ -2657,6 +2660,12 @@ msgstr "វត្ថុ​កូន​ទាំងអស់​ដែល​ផ្
 msgid "all parents of objects matching the expression"
 msgstr "វត្ថុ​មេ​ទាំងអស់​ដែល​ផ្គូផ្គង​ជាមួយ​កន្សោម"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "ធាតុ n-th របស់​ទំនាក់ទំនង និង/ឬ​តំណ n-th របស់​ផ្លូវ"
 
@@ -2681,6 +2690,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "វត្ថុ (និង​តំណ​ផ្លូវ/ធាតុ​ទំនាក់ទំនង​របស់​វា​ទាំងអស់) នៅ​ក្នុង​តំបន់​ទាញ​យក"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "រក​មិន​ឃើញ​ការ​ផ្គូផ្គង​សម្រាប់ ''{0}''"
 
@@ -4631,9 +4648,6 @@ msgstr "កុំ​បង្ហាញ​ម្ដងទៀត (សម័យ​
 msgid "Do not show again (remembers choice)"
 msgstr "កុំ​បង្ហាញ​ម្ដងទៀត (ចងចាំ​ជម្រើស)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "មិន​ពេញលេញ"
 
@@ -8413,9 +8427,6 @@ msgstr "ទំនាក់ទំនង {0}"
 msgid "Object"
 msgstr "វត្ថុ"
 
-msgid "not present"
-msgstr "មិនមែន​បច្ចុប្បន្ន"
-
 msgid "Changeset comment"
 msgstr "សេចក្ដីអធិប្បាយ​សំណុំ​ផ្លាស់ប្ដូរ"
 
@@ -9448,6 +9459,9 @@ msgstr "មាត្រដ្ឋាន​ភីកសែល៖ {0}"
 msgid "Best zoom: {0}"
 msgstr "ការ​ពង្រីក​ល្អ​បំផុត៖ {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9545,6 +9559,13 @@ msgstr "អ្នក​ធ្វើ​ពីមុន"
 msgid "Jump to previous marker"
 msgstr "ទៅកាន់​អ្នក​ធ្វើ​ពីមុន"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "បាន​គាំទ្រ​ចំណោល​ទាំងអស់"
 
@@ -11708,9 +11729,6 @@ msgstr "ថត​ឃ្លាំង​ក្រឡា៖ "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12876,35 +12894,53 @@ msgstr "ប្តូរ​ស្លាក"
 msgid "Add or remove toolbar button"
 msgstr "បន្ថែម ឬ​លុប​ប៊ូតុង​របារ​ឧបករណ៍"
 
-msgid "Unknown requisite: {0}"
-msgstr "មិន​ស្គាល់​តម្រូវ​ការ៖ {0}"
+msgid "Unknown type: {0}"
+msgstr "មិន​ស្គាល់​ប្រភេទ៖ {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "កន្សោម​សមាជិក​មិន​ត្រឹមត្រូវ៖ {0}"
+msgid "Preset group {1} / {0}"
+msgstr "ក្រុម​កំណត់​ស្រេច {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "ព័ត៌មាន​បន្ថែម​អំពី​លក្ខណៈ​នេះ"
+msgid "Preset group {0}"
+msgstr "ក្រុម​កំណត់​ស្រេច {0}"
 
-msgid "Available roles"
-msgstr "តួនាទី​ដែល​មាន"
+msgid "Reference {0} is being used before it was defined"
+msgstr "សេចក្ដី​យោង {0} ត្រូវ​បាន​ប្រើ​មុន​ពេល​កំណត់"
 
-msgid "role"
-msgstr "តួនាទី"
+msgid "Roles cannot appear more than once"
+msgstr "តួនាទី​មិន​អាច​លេចឡើង​ច្រើន​ជាង​ម្ដង​ឡើយ"
 
-msgid "count"
-msgstr "រាប់"
+msgid "Preset role element without parent"
+msgstr "ធាតុ​តួនាទី​កំណត់​ស្រេច​ដែល​គ្មាន​មេ"
 
-msgid "elements"
-msgstr "ធាតុ"
+msgid "Preset sub element without parent"
+msgstr "ធាតុ​រង​ការ​កំណត់​ស្រេច​ដែល​គ្មាន​មេ"
 
-msgid "Optional Attributes:"
-msgstr "គុណ​លក្ខណៈ​ជា​ជម្រើស៖"
+msgid "Error parsing {0}: "
+msgstr "កំហុស​ក្នុង​ការ​ញែក {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "ជ្រើស​ការ​បង្កើន​ស្វ័យប្រវត្តិ​នៃ {0} សម្រាប់​វាល​នេះ"
+msgid "Search preset"
+msgstr "ស្វែងរក​ការ​កំណត់​ស្រេច"
 
-msgid "Cancel auto-increment for this field"
-msgstr "បោះបង់​ការ​បង្កើន​ស្វ័យប្រវត្តិ​សម្រាប់​វាល​នេះ"
+msgid "Show preset search dialog"
+msgstr "បង្ហាញ​ប្រអប់​ស្វែងរក​ការ​កំណត់​ស្រេច"
+
+msgid "Search presets"
+msgstr "ស្វែងរក​ការ​កំណត់​ស្រេច"
+
+msgid "Presets"
+msgstr "ការ​កំណត់​ជាមុន"
+
+msgid "Search for objects by preset"
+msgstr "ស្វែងរក​វត្ថុ​តាម​ការ​កំណត់​ស្រេច"
+
+msgid "Show only applicable to selection"
+msgstr "បង្ហាញ​តែ​អ្វី​ដែល​ត្រូវ​ជាមួយ​ជម្រើស​ប៉ុណ្ណោះ"
+
+msgid "Search in tags"
+msgstr "ស្វែងរក​ក្នុង​ស្លាក"
+
+msgid "Add toolbar button"
+msgstr "បន្ថែម​ប៊ូតុង​របារ​ឧបករណ៍"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12944,53 +12980,35 @@ msgstr ""
 "ការ​ដាក់​ស្លាក​ការ​កំណត់​ស្រេច \"{0}-{1}\" - បាន​ខូច - ចំនួន​ធាតុ​នៅ​ក្នុង "
 "''short_descriptions'' ត្រូវតែ​ដូច​ទៅ​នឹង ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "មិន​ស្គាល់​ប្រភេទ៖ {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "ក្រុម​កំណត់​ស្រេច {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "ក្រុម​កំណត់​ស្រេច {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "សេចក្ដី​យោង {0} ត្រូវ​បាន​ប្រើ​មុន​ពេល​កំណត់"
-
-msgid "Roles cannot appear more than once"
-msgstr "តួនាទី​មិន​អាច​លេចឡើង​ច្រើន​ជាង​ម្ដង​ឡើយ"
-
-msgid "Preset role element without parent"
-msgstr "ធាតុ​តួនាទី​កំណត់​ស្រេច​ដែល​គ្មាន​មេ"
-
-msgid "Preset sub element without parent"
-msgstr "ធាតុ​រង​ការ​កំណត់​ស្រេច​ដែល​គ្មាន​មេ"
+msgid "More information about this feature"
+msgstr "ព័ត៌មាន​បន្ថែម​អំពី​លក្ខណៈ​នេះ"
 
-msgid "Error parsing {0}: "
-msgstr "កំហុស​ក្នុង​ការ​ញែក {0}: "
+msgid "Optional Attributes:"
+msgstr "គុណ​លក្ខណៈ​ជា​ជម្រើស៖"
 
-msgid "Search preset"
-msgstr "ស្វែងរក​ការ​កំណត់​ស្រេច"
+msgid "Unknown requisite: {0}"
+msgstr "មិន​ស្គាល់​តម្រូវ​ការ៖ {0}"
 
-msgid "Show preset search dialog"
-msgstr "បង្ហាញ​ប្រអប់​ស្វែងរក​ការ​កំណត់​ស្រេច"
+msgid "Illegal member expression: {0}"
+msgstr "កន្សោម​សមាជិក​មិន​ត្រឹមត្រូវ៖ {0}"
 
-msgid "Search presets"
-msgstr "ស្វែងរក​ការ​កំណត់​ស្រេច"
+msgid "Available roles"
+msgstr "តួនាទី​ដែល​មាន"
 
-msgid "Presets"
-msgstr "ការ​កំណត់​ជាមុន"
+msgid "role"
+msgstr "តួនាទី"
 
-msgid "Search for objects by preset"
-msgstr "ស្វែងរក​វត្ថុ​តាម​ការ​កំណត់​ស្រេច"
+msgid "count"
+msgstr "រាប់"
 
-msgid "Show only applicable to selection"
-msgstr "បង្ហាញ​តែ​អ្វី​ដែល​ត្រូវ​ជាមួយ​ជម្រើស​ប៉ុណ្ណោះ"
+msgid "elements"
+msgstr "ធាតុ"
 
-msgid "Search in tags"
-msgstr "ស្វែងរក​ក្នុង​ស្លាក"
+msgid "Select auto-increment of {0} for this field"
+msgstr "ជ្រើស​ការ​បង្កើន​ស្វ័យប្រវត្តិ​នៃ {0} សម្រាប់​វាល​នេះ"
 
-msgid "Add toolbar button"
-msgstr "បន្ថែម​ប៊ូតុង​របារ​ឧបករណ៍"
+msgid "Cancel auto-increment for this field"
+msgstr "បោះបង់​ការ​បង្កើន​ស្វ័យប្រវត្តិ​សម្រាប់​វាល​នេះ"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13404,12 +13422,6 @@ msgstr "កម្មវិធី​ជូនដំណឹង​សារ"
 msgid "{0} not available (offline mode)"
 msgstr "{0} មិន​អាច​រក​បាន (របៀប​ក្រៅ​បណ្ដាញ)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"មិន​មាន​ព្រីមីទីវ​ដែល​មាន​លេខ​សម្គាល់ {0} នៅ​ក្នុង​សំណុំ​ទិន្នន័យ។ "
-"មិន​អាច​ស្គាល់​ប្រភេទ​ព្រីមីទីវ។"
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "ទៅ​ប្រមូល​កញ្ចប់​តំណ​ពី ''{0}''"
 
@@ -15837,6 +15849,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16129,6 +16144,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -16315,12 +16333,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16579,6 +16603,16 @@ msgstr ""
 "ដាក់​កំណាត់​ផ្លូវ​ដែល​បាន​ជ្រើស​ជា​គូ​ប៉ារ៉ាឡែល​ដោយ​បង្វិល​វា​ជុំវិញ​ស្នូល។"
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16630,15 +16664,13 @@ msgstr ""
 "អនុវត្ត​បន្ទាត់​ពាក្យ​បញ្ជា រួច​បើក​វា​ដើម្បី​បង្កើត​ពាក្យ​បញ្ជា​របស់​អ្នក។ "
 "មើល​តំណ​សម្រាប់​ពាក្យ​បញ្ជា​ស្តង់ដារ (អ័ក្ស រង្វង់។ល។)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(ព្រមាន៖ សម្រាប់​ពិសោធន៍!) ឧបករណ៍​សម្រាប់​ភ្ជាប់ (បញ្ចូល) ទិន្នន័យ​ចូលគ្នា។"
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "បង្កើត​ក្រឡា​ផ្លូវ។"
 
@@ -17008,6 +17040,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17323,59 +17360,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -19862,6 +19849,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19973,12 +19987,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -20030,9 +20038,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -20154,12 +20159,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -20191,6 +20190,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -20498,10 +20509,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -20531,24 +20548,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20842,6 +20847,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -21529,9 +21552,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22667,10 +22687,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -22697,10 +22714,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -22727,6 +22747,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -22742,6 +22765,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -24658,9 +24684,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24954,9 +24977,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -25611,13 +25631,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26243,6 +26256,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -27676,12 +27765,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27697,6 +27792,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30156,6 +30254,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "មិន​អាច​ដាក់​តំណ​នៅ​ក្រៅ​ផែនដី​បានទេ។"
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ko.po b/i18n/po/ko.po
index 9922f64..aeafa38 100644
--- a/i18n/po/ko.po
+++ b/i18n/po/ko.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-10-04 14:18+0000\n"
 "Last-Translator: Myeongjin <aranet100 at gmail.com>\n"
 "Language-Team: Korean <ko at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:50+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:48+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ko\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1355,6 +1355,15 @@ msgid_plural ""
 "way also."
 msgstr[0] "선택한 node를 사용하는 way가 하나 이상 있습니다. way도 선택해 주세요"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "환형 way를 나누기 위해서는 2개 이상의 node를 선택해야 합니다"
 
@@ -2072,17 +2081,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2494,6 +2497,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2515,6 +2524,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "''{0}''를 찾을 수 없음"
 
@@ -4343,9 +4360,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7834,9 +7848,6 @@ msgstr ""
 msgid "Object"
 msgstr "대상"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8738,6 +8749,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8837,6 +8851,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10767,9 +10788,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11838,34 +11856,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11896,52 +11932,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12288,10 +12306,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14438,6 +14452,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14730,6 +14747,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14916,12 +14936,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15176,6 +15202,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15209,12 +15245,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15521,6 +15555,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15836,59 +15875,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18375,6 +18364,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18486,12 +18502,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18543,9 +18553,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18667,12 +18674,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18704,6 +18705,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19011,10 +19024,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19044,24 +19063,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19355,6 +19362,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20042,9 +20067,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21180,10 +21202,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21210,10 +21229,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21240,6 +21262,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21255,6 +21280,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23171,9 +23199,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23467,9 +23492,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24124,13 +24146,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24756,6 +24771,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26189,12 +26280,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26210,6 +26307,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28669,6 +28769,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ky.po b/i18n/po/ky.po
index 7bdb23c..8a924e5 100644
--- a/i18n/po/ky.po
+++ b/i18n/po/ky.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-12-18 02:36+0000\n"
 "Last-Translator: SimpleLeon <Unknown>\n"
 "Language-Team: Kirghiz <ky at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:49+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:48+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -1362,6 +1362,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2080,17 +2089,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2502,6 +2505,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2523,6 +2532,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4358,9 +4375,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7850,9 +7864,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8749,6 +8760,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8848,6 +8862,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10778,9 +10799,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11849,34 +11867,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11907,52 +11943,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12299,10 +12317,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14449,6 +14463,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14741,6 +14758,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14927,12 +14947,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15187,6 +15213,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15220,12 +15256,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15532,6 +15566,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15847,59 +15886,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18386,6 +18375,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18497,12 +18513,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18554,9 +18564,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18678,12 +18685,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18715,6 +18716,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19022,10 +19035,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19055,24 +19074,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19366,6 +19373,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20053,9 +20078,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21191,10 +21213,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21221,10 +21240,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21251,6 +21273,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21266,6 +21291,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23182,9 +23210,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23478,9 +23503,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24135,13 +24157,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24767,6 +24782,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26200,12 +26291,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26221,6 +26318,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28680,6 +28780,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/lo.po b/i18n/po/lo.po
index e030d44..e731bed 100644
--- a/i18n/po/lo.po
+++ b/i18n/po/lo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-09-15 10:06+0000\n"
 "Last-Translator: Anousone <Unknown>\n"
 "Language-Team: Lao <lo at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:50+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:48+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/lt.po b/i18n/po/lt.po
index d17d145..05debb4 100644
--- a/i18n/po/lt.po
+++ b/i18n/po/lt.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-06 18:43+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-18 11:39+0000\n"
 "Last-Translator: Aurimas Fišeras <Unknown>\n"
 "Language-Team: Lithuanian <lt at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "(n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:51+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:49+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: lt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1472,6 +1472,15 @@ msgstr[2] ""
 "Parinktais taškais naudojasi daugiau nei vienas kelias. Parinkite šį kelią "
 "taip pat."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Kuris kelio segmentas turėtų panaudoti {0} istoriją?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segmentas {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Parinkite du ar daugiau taškų norėdami perskirti apskritą kelią."
 
@@ -2261,18 +2270,12 @@ msgstr ""
 "Spauskite, kad perkeltumėte pažymėtą tašką. Laikykite Ctrl, kad pridėtumėte "
 "naujus taškus ar Alt, kad trintumėte."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Negalima padėti tašką už pasaulio ribų."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Pridėti tašką į kelią"
 msgstr[1] "Pridėti tašką į {0} kelius"
 msgstr[2] "Pridėti tašką į {0} kelių"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Negalima pašalinti taško, kurį naudoja keli objektai"
-
 msgid "Cannot delete node that has tags"
 msgstr "Negalima pašalinti taško, turinčio žymų"
 
@@ -2724,6 +2727,12 @@ msgstr "išraišką atitinkančių objektų vaikai"
 msgid "all parents of objects matching the expression"
 msgstr "išraišką atitinkančių objektų tėvai"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-tasis ryšio narys ir/arba n-tasis kelio taškas"
 
@@ -2747,6 +2756,14 @@ msgstr "objektai atsiųstame plote"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "objektai (ir visi jo kelių taškai / ryšių nariai) atsisiųstame plote"
 
+msgid "Searching"
+msgstr "Ieškoma"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "„{0}“ nerasta"
 
@@ -4731,9 +4748,6 @@ msgstr "Daugiau nerodyti (šiame seanse)"
 msgid "Do not show again (remembers choice)"
 msgstr "Daugiau nerodyti (atsiminti pasirinkimą)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "nebaigtas"
 
@@ -7604,7 +7618,7 @@ msgid "Launch browser with wiki help for selected object"
 msgstr "Paleisti naršyklę su pažymėto objekto wiki pagalba"
 
 msgid "Go to Taginfo"
-msgstr ""
+msgstr "Į Taginfo"
 
 msgid "Launch browser with Taginfo statistics for selected object"
 msgstr ""
@@ -8524,9 +8538,6 @@ msgstr "Ryšys  {0}"
 msgid "Object"
 msgstr "Objektas"
 
-msgid "not present"
-msgstr "nėra"
-
 msgid "Changeset comment"
 msgstr "Pakeitimo komentaras"
 
@@ -9579,6 +9590,9 @@ msgstr "Taško mastelis: {0}"
 msgid "Best zoom: {0}"
 msgstr "Geriausias mastelis: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Apytikris podėlio dydis: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Podėlio būsena: {0}"
 
@@ -9684,6 +9698,13 @@ msgstr "Ankstesnis žymeklis"
 msgid "Jump to previous marker"
 msgstr "Peršokti prie ankstesnio žymeklio"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Palaikomos visos projekcijos"
 
@@ -11797,13 +11818,13 @@ msgid "2. Enter name for this layer"
 msgstr "2. Įvesti pavadinimą šiam sluoksniui"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "{0} podėlis, visas podėlio dydis: {1} baitų"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Podėlio pavadinimas"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Objektų kiekis"
 
 msgid "imagery fade"
 msgstr "vaizdų stelbimas"
@@ -11829,9 +11850,6 @@ msgstr "Kaladėlių podėlio aplankas: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Disko podėlio didžiausias leidžiamas dydis (vaizdui) megabaitais: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Didžiausias leidžiamas skaičius objektų , atminties podėlyje: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12986,35 +13004,53 @@ msgstr "Pakeisti žymas"
 msgid "Add or remove toolbar button"
 msgstr "Pridėti ar pašalinti įrankių juostos mygtuką"
 
-msgid "Unknown requisite: {0}"
-msgstr "Nežinomas rekvizitas: {0}"
+msgid "Unknown type: {0}"
+msgstr "Nežinomas tipas: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Negalimas nario išreiškimas: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Ruošinių grupė {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Daugiau informacijos apie šią priemonę"
+msgid "Preset group {0}"
+msgstr "Ruošinių grupė {0}"
 
-msgid "Available roles"
-msgstr "Prieinamos rolės"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Nuoroda {0} jau buvo naudojama prieš tai, kai ji buvo apibrėžta"
 
-msgid "role"
-msgstr "rolė"
+msgid "Roles cannot appear more than once"
+msgstr "Rolės negali pasirodyti daugiau nei kartą"
 
-msgid "count"
-msgstr "skaičius"
+msgid "Preset role element without parent"
+msgstr "Paruošti rolės elementą be tėvo"
 
-msgid "elements"
-msgstr "elementai"
+msgid "Preset sub element without parent"
+msgstr "Paruošti paelementį be tevo"
 
-msgid "Optional Attributes:"
-msgstr "Pasirenkami atributai"
+msgid "Error parsing {0}: "
+msgstr "Nagrinėjimo klaida {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Pasirinkti {0} auto-prieaugį šiam laukui"
+msgid "Search preset"
+msgstr "Ieškoti ruošinių"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Atšaukti auto-prieaugį šiam laukui"
+msgid "Show preset search dialog"
+msgstr "Rodyti ruošinių paieškos dialogo langą"
+
+msgid "Search presets"
+msgstr "Paieškos ruošiniai"
+
+msgid "Presets"
+msgstr "Ruošiniai"
+
+msgid "Search for objects by preset"
+msgstr "Ieškoti objektų pagal ruošinį"
+
+msgid "Show only applicable to selection"
+msgstr "Rodyti tik tinkamus pažymėjimui"
+
+msgid "Search in tags"
+msgstr "Ieškoti žymose"
+
+msgid "Add toolbar button"
+msgstr "Pridėti įrankių juostos mygtuką"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13054,53 +13090,35 @@ msgstr ""
 "Klaidingas žymėjimo ruošinys „{0}-{1}“ – „short_descriptions“ elementų "
 "skaičius privalo būti toks pat kaip „values“"
 
-msgid "Unknown type: {0}"
-msgstr "Nežinomas tipas: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Ruošinių grupė {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Ruošinių grupė {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Nuoroda {0} jau buvo naudojama prieš tai, kai ji buvo apibrėžta"
-
-msgid "Roles cannot appear more than once"
-msgstr "Rolės negali pasirodyti daugiau nei kartą"
-
-msgid "Preset role element without parent"
-msgstr "Paruošti rolės elementą be tėvo"
-
-msgid "Preset sub element without parent"
-msgstr "Paruošti paelementį be tevo"
+msgid "More information about this feature"
+msgstr "Daugiau informacijos apie šią priemonę"
 
-msgid "Error parsing {0}: "
-msgstr "Nagrinėjimo klaida {0}: "
+msgid "Optional Attributes:"
+msgstr "Pasirenkami atributai"
 
-msgid "Search preset"
-msgstr "Ieškoti ruošinių"
+msgid "Unknown requisite: {0}"
+msgstr "Nežinomas rekvizitas: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Rodyti ruošinių paieškos dialogo langą"
+msgid "Illegal member expression: {0}"
+msgstr "Negalimas nario išreiškimas: {0}"
 
-msgid "Search presets"
-msgstr "Paieškos ruošiniai"
+msgid "Available roles"
+msgstr "Prieinamos rolės"
 
-msgid "Presets"
-msgstr "Ruošiniai"
+msgid "role"
+msgstr "rolė"
 
-msgid "Search for objects by preset"
-msgstr "Ieškoti objektų pagal ruošinį"
+msgid "count"
+msgstr "skaičius"
 
-msgid "Show only applicable to selection"
-msgstr "Rodyti tik tinkamus pažymėjimui"
+msgid "elements"
+msgstr "elementai"
 
-msgid "Search in tags"
-msgstr "Ieškoti žymose"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Pasirinkti {0} auto-prieaugį šiam laukui"
 
-msgid "Add toolbar button"
-msgstr "Pridėti įrankių juostos mygtuką"
+msgid "Cancel auto-increment for this field"
+msgstr "Atšaukti auto-prieaugį šiam laukui"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13259,6 +13277,7 @@ msgstr "Nepavyko pervadinti failo {0} į {1}."
 
 msgid "Failed to load {0}, use cached file and retry next time: {1}"
 msgstr ""
+"Nepavyko įkelti {0}, naudoti failą podėlyje ir bandyti kitą kartą: {1}"
 
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
@@ -13474,10 +13493,6 @@ msgstr "Pranešimų pranešiklis"
 msgid "{0} not available (offline mode)"
 msgstr "{0} neprieinama (režimas neprisijungus)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Gaunamas taškų rinkinys iš „{0}“"
 
@@ -15746,6 +15761,9 @@ msgstr "Toulouse - Orthophotoplan 2007 (Tulūza, Prancūzija)"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16044,6 +16062,9 @@ msgstr "Zabžė: Ortofotomapa 2011 (oro nuotrauka)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (takai)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16230,12 +16251,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6 colių Škotija 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k I serijos 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1 colio VII serijos 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k istorinis (OSM-Best)"
 
@@ -16490,6 +16517,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16523,12 +16560,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16848,6 +16883,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17165,60 +17205,9 @@ msgstr "Operatorius"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "saulėlydis,saulėtekis"
-
-msgid "Su 09:30,11:00"
-msgstr "Sk 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Št,Sk,ŠV 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Št 18:00; Sk 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Pn 08:00-18:00; Bal 10-15 ne; Bir 07:00-20:00; Rgp ne; Grd 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Št 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "savaitė 1-53/2 Pn 09:00-12:00; savaitė 2-52/2 Tr 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Darbo valandos"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Št-Sk 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Pr-Pn 08:30-20:00; Št,Sk 08:00-15:00; ŠV ne"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Pr-Pn 08:30-20:00, Kt-Sk 08:00-15:00; Št 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr "Pr-Sk 08:00-18:00; Bal 10-15 ne; Bir 08:00-14:00; Rgp ne; Grd 25 ne"
-
-msgid "sunrise-sunset"
-msgstr "saulėtekis-saulėlydis"
-
-msgid "Su 10:00+"
-msgstr "Sk 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Neįgaliųjų vežimėliai"
 
@@ -19705,6 +19694,33 @@ msgstr "Bendrabutis"
 msgid "Alpine Hut"
 msgstr "Alpių namelis"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -19816,12 +19832,6 @@ msgstr "Aludė lauke (Biergarten)"
 msgid "Bar"
 msgstr "Baras"
 
-msgid "Night Club"
-msgstr "Naktinis klubas"
-
-msgid "Strip Club"
-msgstr "Striptizo klubas"
-
 msgid "Tourism"
 msgstr "Turizmas"
 
@@ -19873,9 +19883,6 @@ msgstr "miestas"
 msgid "region"
 msgstr "regionas"
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -19997,12 +20004,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Jodinėjimas"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Viešnamis"
-
 msgid "Playground"
 msgstr "Žaidimų aikštelė"
 
@@ -20034,6 +20035,18 @@ msgstr "Žvejyba"
 msgid "Private Swimming Pool"
 msgstr "Privatus plaukimo baseinas"
 
+msgid "Night Club"
+msgstr "Naktinis klubas"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Striptizo klubas"
+
+msgid "Brothel"
+msgstr "Viešnamis"
+
 msgid "Culture"
 msgstr "Kultūra"
 
@@ -20341,10 +20354,16 @@ msgstr "Veterinarija"
 msgid "Toilets/Restrooms"
 msgstr "Tualetai/Tualeto kambariai"
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -20374,24 +20393,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Pašto dėžutė"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20685,6 +20692,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Reklamos stulpas"
 
@@ -21372,9 +21397,6 @@ msgstr "Švyturys"
 msgid "Street Lamp"
 msgstr "Gatvės žibintas"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -22510,10 +22532,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -22540,10 +22559,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -22570,6 +22592,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -22585,6 +22610,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -24516,9 +24544,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr "Keisti Adresus"
 
-msgid "Searching"
-msgstr "Ieškoma"
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24812,9 +24837,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr "OSM tikrintuvės klaidos"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM tikrintuvės klaidos"
 
@@ -25432,6 +25454,9 @@ msgid ""
 "Load cache first ?\n"
 "(No = new cache)"
 msgstr ""
+"Vieta „{0}“ rasta podėlyje.\n"
+"Pirmiau įkelti podėlį?\n"
+"(Ne = naujas podėlis)"
 
 msgid "Select Feuille"
 msgstr ""
@@ -25486,13 +25511,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26120,6 +26138,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -27569,12 +27663,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr "Mapillary filtras"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Atverti Mapillary filtro dialogo langą"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27590,6 +27690,9 @@ msgstr "Mapillary istorija"
 msgid "Open Mapillary history dialog"
 msgstr "Atverti Mapillary istorijos dialogo langą"
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr "Atverti Mapillary langą"
 
@@ -30065,6 +30168,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Negalima padėti tašką už pasaulio ribų."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/lv.po b/i18n/po/lv.po
index cf7ae28..1f87f48 100644
--- a/i18n/po/lv.po
+++ b/i18n/po/lv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-10-03 22:16+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Latvian <lv at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:51+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:49+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: lv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1374,6 +1374,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2092,17 +2101,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2514,6 +2517,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2535,6 +2544,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4370,9 +4387,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7861,9 +7875,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8760,6 +8771,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8859,6 +8873,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10789,9 +10810,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11860,34 +11878,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11918,52 +11954,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12314,10 +12332,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14464,6 +14478,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14756,6 +14773,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14942,12 +14962,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15202,6 +15228,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15235,12 +15271,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15547,6 +15581,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15862,59 +15901,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18401,6 +18390,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18512,12 +18528,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18569,9 +18579,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18693,12 +18700,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18730,6 +18731,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19037,10 +19050,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19070,24 +19089,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19381,6 +19388,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20068,9 +20093,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21206,10 +21228,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21236,10 +21255,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21266,6 +21288,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21281,6 +21306,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23197,9 +23225,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23493,9 +23518,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24150,13 +24172,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24782,6 +24797,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26215,12 +26306,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26236,6 +26333,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28695,6 +28795,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/mk.po b/i18n/po/mk.po
index d90382c..b9120f8 100644
--- a/i18n/po/mk.po
+++ b/i18n/po/mk.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2013-05-11 04:37+0000\n"
 "Last-Translator: Bojan Jankuloski <bojan.jankuloski at gmail.com>\n"
 "Language-Team: Macedonian <mk at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:52+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:50+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: mk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1366,6 +1366,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2084,17 +2093,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2506,6 +2509,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2527,6 +2536,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4362,9 +4379,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7854,9 +7868,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8753,6 +8764,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8852,6 +8866,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10782,9 +10803,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11854,34 +11872,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11912,52 +11948,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12304,10 +12322,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14454,6 +14468,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14746,6 +14763,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14932,12 +14952,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15192,6 +15218,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15225,12 +15261,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15537,6 +15571,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15852,59 +15891,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18391,6 +18380,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18502,12 +18518,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18559,9 +18569,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18683,12 +18690,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18720,6 +18721,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19027,10 +19040,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19060,24 +19079,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19371,6 +19378,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20058,9 +20083,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21196,10 +21218,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21226,10 +21245,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21256,6 +21278,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21271,6 +21296,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23187,9 +23215,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23483,9 +23508,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24140,13 +24162,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24772,6 +24787,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26205,12 +26296,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26226,6 +26323,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28685,6 +28785,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/mr.po b/i18n/po/mr.po
index 0b4757b..2886f2b 100644
--- a/i18n/po/mr.po
+++ b/i18n/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL at ADDRESS>\n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-05-24 23:45+0000\n"
 "Last-Translator: Singleton <singleton47+ubuntuone at live.com>\n"
 "Language-Team: Marathi <mr at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:52+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:50+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: mr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1387,6 +1387,15 @@ msgstr[0] ""
 msgstr[1] ""
 "एकाहून अधिक मार्ग आपण निवडलेल्या गाठी वापरत आहेत. कृपया मार्गही निवडा."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "वर्तुळाकार मार्ग विभागण्यासाठी आपण दोन किंवा अधिक गाठी निवडणे आवश्यक आहे."
@@ -2111,17 +2120,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2533,6 +2536,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2555,6 +2564,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4390,9 +4407,6 @@ msgstr "पुन्हा दाखवू नका (हे सत्र)"
 msgid "Do not show again (remembers choice)"
 msgstr "पुन्हा दाखवू नका (निवड लक्षात ठेवली जाईल)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "अपूर्ण"
 
@@ -7882,9 +7896,6 @@ msgstr "संबंध {0}"
 msgid "Object"
 msgstr "वस्तू"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8781,6 +8792,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8880,6 +8894,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10821,9 +10842,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11892,34 +11910,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11950,52 +11986,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12342,10 +12360,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14492,6 +14506,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14784,6 +14801,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14970,12 +14990,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15230,6 +15256,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15263,12 +15299,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15575,6 +15609,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15890,59 +15929,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18429,6 +18418,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18540,12 +18556,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18597,9 +18607,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18721,12 +18728,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18758,6 +18759,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19065,10 +19078,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19098,24 +19117,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19409,6 +19416,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20096,9 +20121,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21234,10 +21256,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21264,10 +21283,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21294,6 +21316,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21309,6 +21334,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23225,9 +23253,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23521,9 +23546,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24178,13 +24200,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24810,6 +24825,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26243,12 +26334,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26264,6 +26361,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28723,6 +28823,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ms.po b/i18n/po/ms.po
index 0cc6eb3..9dc7b86 100644
--- a/i18n/po/ms.po
+++ b/i18n/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-12-11 22:14+0000\n"
 "Last-Translator: abuyop <Unknown>\n"
 "Language-Team: Malay <ms at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:53+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:51+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ms\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/nb.po b/i18n/po/nb.po
index 387a3fa..13a771b 100644
--- a/i18n/po/nb.po
+++ b/i18n/po/nb.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-07-22 20:56+0000\n"
 "Last-Translator: Andreas Bertheussen <andreas at elektronisk.org>\n"
 "Language-Team: Norwegian Bokmal <nb at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:54+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:52+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: nb\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1392,6 +1392,15 @@ msgstr[0] ""
 msgstr[1] ""
 "Mer enn én linje bruker de valgte nodene. Velg aktuell linje i tillegg."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Velg to eller flere noder for å splitte sirkelformet linje."
 
@@ -2118,17 +2127,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr "Kan ikke slette node som har egenskaper"
 
@@ -2544,6 +2547,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2565,6 +2574,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Fant ingen treff for «{0}»"
 
@@ -4419,9 +4436,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "uferdig"
 
@@ -7948,9 +7962,6 @@ msgstr ""
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8866,6 +8877,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8965,6 +8979,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10939,9 +10960,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12013,34 +12031,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Ukjent type: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Mer informasjon om denne funksjonen"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "role"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Error parsing {0}: "
+msgstr "Feil ved lesing av {0}: "
+
+msgid "Search preset"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Valgfrie attributter:"
+msgid "Show preset search dialog"
+msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search presets"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Presets"
+msgstr "Objektmaler"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12071,52 +12107,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Ukjent type: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Mer informasjon om denne funksjonen"
 
-msgid "Preset role element without parent"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Valgfrie attributter:"
 
-msgid "Preset sub element without parent"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Feil ved lesing av {0}: "
-
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Objektmaler"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12476,10 +12494,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14639,6 +14653,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14931,6 +14948,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15117,12 +15137,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15377,6 +15403,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15410,12 +15446,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15740,6 +15774,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Lager rekkehus / terassehus fra en enkel husblokk."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16055,59 +16094,9 @@ msgstr "Operatør"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Åpningstider"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18594,6 +18583,33 @@ msgstr "Ungdomsherberge"
 msgid "Alpine Hut"
 msgstr "Fjellstue"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Nærmere forklaring"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18705,12 +18721,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turisme"
 
@@ -18762,9 +18772,6 @@ msgstr "By"
 msgid "region"
 msgstr "Region"
 
-msgid "Closer Description"
-msgstr "Nærmere forklaring"
-
 msgid "Routes shown for:"
 msgstr "Ruter for:"
 
@@ -18886,12 +18893,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Lekeplass"
 
@@ -18923,6 +18924,18 @@ msgstr "Fiskeplass"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19230,10 +19243,16 @@ msgstr "Veterinær"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19263,24 +19282,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Postkasse"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19574,6 +19581,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20261,9 +20286,6 @@ msgstr "Fyrtårn"
 msgid "Street Lamp"
 msgstr "Gatelykt"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr "Målestasjon"
 
@@ -21399,12 +21421,9 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
+msgid "For the body"
 msgstr ""
 
-msgid "Mall"
-msgstr "Kjøpesenter"
-
 msgid "Chemist"
 msgstr "Hygiene"
 
@@ -21429,12 +21448,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr "Gullsmed"
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
 msgstr ""
 
+msgid "Mall"
+msgstr "Kjøpesenter"
+
 msgid "Florist"
 msgstr "Blomster"
 
@@ -21459,6 +21481,9 @@ msgstr ""
 msgid "Toys"
 msgstr "Leker"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21474,6 +21499,9 @@ msgstr ""
 msgid "Pet"
 msgstr "Dyrebutikk"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Begravelsesbyrå"
 
@@ -23398,9 +23426,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23694,9 +23719,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24351,13 +24373,6 @@ msgid "Auto sourcing"
 msgstr "Auto sourcing"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25004,6 +25019,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26450,12 +26541,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26471,6 +26568,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28935,6 +29035,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terasse"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/nds.po b/i18n/po/nds.po
index f08cefe..cf04a3b 100644
--- a/i18n/po/nds.po
+++ b/i18n/po/nds.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-11-29 09:01+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: German, Low <nds at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:53+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:51+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4358,9 +4375,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7850,9 +7864,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8749,6 +8760,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8848,6 +8862,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10778,9 +10799,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11849,34 +11867,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11907,52 +11943,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12299,10 +12317,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14449,6 +14463,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14741,6 +14758,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14927,12 +14947,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15187,6 +15213,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15220,12 +15256,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15532,6 +15566,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15847,59 +15886,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18386,6 +18375,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18497,12 +18513,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18554,9 +18564,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18678,12 +18685,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18715,6 +18716,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19022,10 +19035,16 @@ msgstr "Tierarz"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19055,24 +19074,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19366,6 +19373,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20053,9 +20078,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21191,10 +21213,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21221,10 +21240,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21251,6 +21273,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21266,6 +21291,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23182,9 +23210,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23478,9 +23503,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24135,13 +24157,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24767,6 +24782,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26200,12 +26291,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26221,6 +26318,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28680,6 +28780,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/nl.po b/i18n/po/nl.po
index ca1b4ef..b21e023 100644
--- a/i18n/po/nl.po
+++ b/i18n/po/nl.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-07 09:47+0000\n"
-"Last-Translator: Martien <Unknown>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-14 08:41+0000\n"
+"Last-Translator: korst <Unknown>\n"
 "Language-Team: Dutch\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:39+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:38+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: nl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1502,6 +1502,15 @@ msgstr[1] ""
 "Er is meer dan één weg die gebruikt maakt van de knopen die u geselecteerd "
 "heeft. Selecteer ook de weg."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Je moet twee of meer knopen selecteren om een rondgaande weg te splitsen"
@@ -2299,18 +2308,11 @@ msgstr ""
 "Klik om de geaccentueerde knoop te verplaatsen. Houd Ctrl ingedrukt om "
 "nieuwe knopen toe te voegen, of Alt om te verwijderen."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Kan geen knoop buiten de wereld plaatsen."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Voeg een nieuwe knoop aan weg toe"
 msgstr[1] "Voeg een nieuwe knoop aan {0} wegen toe"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-"Kan geen knoop verwijderen waarnaar door meerdere objecten wordt verwezen"
-
 msgid "Cannot delete node that has tags"
 msgstr "Kan geen knoop verwijderen die tags heeft"
 
@@ -2583,7 +2585,7 @@ msgid "regular expression"
 msgstr "Reguliere expressie"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "selectie MapCSS"
 
 msgid "add toolbar button"
 msgstr "Voeg knop voor werkbalk toe"
@@ -2759,6 +2761,12 @@ msgstr "all kinderen van objecten die overeenkomen met de uitdrukking"
 msgid "all parents of objects matching the expression"
 msgstr "all ouders van objecten die overeenkomen met de uitdrukking"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-de lid van relatie en/of n-de knoop van weg"
 
@@ -2784,6 +2792,14 @@ msgstr ""
 "objecten (en alle wegen knopen / leden van relaties ervan) in gedownloade "
 "gebied"
 
+msgid "Searching"
+msgstr "Zoeken"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Geen overeenkomst gevonden voor ''{0}''"
 
@@ -2869,7 +2885,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Onverwacht teken. {0} werd verwacht, {1} werd gevonden"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Parsen selectie MapCSS mislukt"
 
 msgid "Unexpected token: {0}"
 msgstr "Onverwacht teken: {0}"
@@ -3557,7 +3573,7 @@ msgid "Projection"
 msgstr "Projectie"
 
 msgid "Matrix set identifier"
-msgstr ""
+msgstr "Identificatie instellen matrix"
 
 msgid "No layers defined by getCapabilities document: {0}"
 msgstr "Geen lagen gedefinieerd door document getCapabalities: {0}"
@@ -4499,7 +4515,7 @@ msgid "Key ''{0}'' looks like ''{1}''."
 msgstr "Sleutel ''{0}'' lijkt op ''{1}''."
 
 msgid "Misspelled property key"
-msgstr ""
+msgstr "Fout gespelde sleutel eigenschap"
 
 msgid "Key ''{0}'' not in presets."
 msgstr "Sleutel \"{0}\" ontbreekt in voorkeuzen."
@@ -4785,9 +4801,6 @@ msgstr "Niet opnieuw weergeven (deze sessie)"
 msgid "Do not show again (remembers choice)"
 msgstr "Niet opnieuw tonen (keuze onthouden)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incompleet"
 
@@ -5225,7 +5238,7 @@ msgstr "Items Zoekmenu"
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "Audio"
 
 msgid "Do not hide toolbar"
 msgstr "Werkbalk niet verbergen"
@@ -8668,9 +8681,6 @@ msgstr "Relatie {0}"
 msgid "Object"
 msgstr "Object"
 
-msgid "not present"
-msgstr "niet aanwezig"
-
 msgid "Changeset comment"
 msgstr "Opmerking wijzigingenset"
 
@@ -9721,6 +9731,9 @@ msgstr "Pixelschaal: {0}"
 msgid "Best zoom: {0}"
 msgstr "Beste zoomniveau: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Statistieken voor cache: {0}"
 
@@ -9822,6 +9835,13 @@ msgstr "Vorige markering"
 msgid "Jump to previous marker"
 msgstr "Spring naar vorige markering"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Alle projecties worden ondersteund"
 
@@ -11988,13 +12008,13 @@ msgid "2. Enter name for this layer"
 msgstr "2. Voer de naam voor deze laag in"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "{0} cache, totaal grootte cache: {1} bytes"
 
 msgid "Cache name"
 msgstr "Cache-naam"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Tellen objecten"
 
 msgid "imagery fade"
 msgstr "Afbeelding vervagen"
@@ -12020,11 +12040,8 @@ msgstr "Map voor cache van tegels: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Maximale grootte van schijfcache (per afbeelding) in MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maximale aantal objecten in geheugencache: "
-
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Verschuiving zoom tegels:"
 
 msgid "Imagery Preferences"
 msgstr "Voorkeuren voor afbeeldingslaag"
@@ -13205,35 +13222,53 @@ msgstr "Tags wijzigen"
 msgid "Add or remove toolbar button"
 msgstr "Knop op werkbalk toeovegen of verwijderen"
 
-msgid "Unknown requisite: {0}"
-msgstr "Onbekend vereiste: {0}"
+msgid "Unknown type: {0}"
+msgstr "Onbekend type: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Ongeldige uitdrukking voor lid: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Voorkeuze groep {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Meer informatie over deze functionaliteit"
+msgid "Preset group {0}"
+msgstr "Voorkeuze groep {0}"
 
-msgid "Available roles"
-msgstr "Beschikbare rollen"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Verwijzing {0} werd gebruikt dóórdat die werd gedefinieerd"
 
-msgid "role"
-msgstr "rol"
+msgid "Roles cannot appear more than once"
+msgstr "Rollen kunnen slechts één keer worden weergegeven"
 
-msgid "count"
-msgstr "aantal"
+msgid "Preset role element without parent"
+msgstr "Voorkeuze rol element zonder ouder"
 
-msgid "elements"
-msgstr "elementen"
+msgid "Preset sub element without parent"
+msgstr "Voorkeuze sub-element zonder ouder"
 
-msgid "Optional Attributes:"
-msgstr "Optionele attributen:"
+msgid "Error parsing {0}: "
+msgstr "Fout bij parsen van {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Selecteer automatisch verhogen van {0} voor dit veld"
+msgid "Search preset"
+msgstr "Voorkeuze zoeken"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Annuleer automatisch verhogen voor dit veld"
+msgid "Show preset search dialog"
+msgstr "Dialoogvenster Voorkeuze zoeken weergeven"
+
+msgid "Search presets"
+msgstr "Voorkeuzen zoeken"
+
+msgid "Presets"
+msgstr "Voorkeuze"
+
+msgid "Search for objects by preset"
+msgstr "Zoeken naar objecten met voorkeuze"
+
+msgid "Show only applicable to selection"
+msgstr "Alleen die geselecteerd kunnen worden weergeven"
+
+msgid "Search in tags"
+msgstr "In tags zoeken"
+
+msgid "Add toolbar button"
+msgstr "Knop op werkbalk toevoegen"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13273,53 +13308,35 @@ msgstr ""
 "Gebroken voorkeur voor taggen \"{0}-{1}\" - aantal items in "
 "''short_descriptions'' moet hetzelfde zijn als in ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Onbekend type: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Voorkeuze groep {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Voorkeuze groep {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Verwijzing {0} werd gebruikt dóórdat die werd gedefinieerd"
-
-msgid "Roles cannot appear more than once"
-msgstr "Rollen kunnen slechts één keer worden weergegeven"
-
-msgid "Preset role element without parent"
-msgstr "Voorkeuze rol element zonder ouder"
-
-msgid "Preset sub element without parent"
-msgstr "Voorkeuze sub-element zonder ouder"
+msgid "More information about this feature"
+msgstr "Meer informatie over deze functionaliteit"
 
-msgid "Error parsing {0}: "
-msgstr "Fout bij parsen van {0}: "
+msgid "Optional Attributes:"
+msgstr "Optionele attributen:"
 
-msgid "Search preset"
-msgstr "Voorkeuze zoeken"
+msgid "Unknown requisite: {0}"
+msgstr "Onbekend vereiste: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Dialoogvenster Voorkeuze zoeken weergeven"
+msgid "Illegal member expression: {0}"
+msgstr "Ongeldige uitdrukking voor lid: {0}"
 
-msgid "Search presets"
-msgstr "Voorkeuzen zoeken"
+msgid "Available roles"
+msgstr "Beschikbare rollen"
 
-msgid "Presets"
-msgstr "Voorkeuze"
+msgid "role"
+msgstr "rol"
 
-msgid "Search for objects by preset"
-msgstr "Zoeken naar objecten met voorkeuze"
+msgid "count"
+msgstr "aantal"
 
-msgid "Show only applicable to selection"
-msgstr "Alleen die geselecteerd kunnen worden weergeven"
+msgid "elements"
+msgstr "elementen"
 
-msgid "Search in tags"
-msgstr "In tags zoeken"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Selecteer automatisch verhogen van {0} voor dit veld"
 
-msgid "Add toolbar button"
-msgstr "Knop op werkbalk toevoegen"
+msgid "Cancel auto-increment for this field"
+msgstr "Annuleer automatisch verhogen voor dit veld"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13615,7 +13632,7 @@ msgid "GeoJSON Files"
 msgstr "GeoJSON-bestanden"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Geprojecteerde GeoJSON-bestanden"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Laag ''{0}'' niet ondersteund"
@@ -13725,12 +13742,6 @@ msgstr "Aanduiding voor berichten"
 msgid "{0} not available (offline mode)"
 msgstr "{0} niet beschikbaar (modus Offline)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Geen primitief met ID {0} in lokale gegevensset. Kan type primitief niet "
-"bepalen."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Een pakket knopen ophalen vanaf ''{0}''"
 
@@ -16064,7 +16075,7 @@ msgid "SPW(allonie) 2009 aerial imagery"
 msgstr "SPW(allonie) 2009 luchtfoto"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
-msgstr ""
+msgstr "cadastre: alleen voor namen en huisnummers, slechte geometrie"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Mapa de Setores Urbanos"
@@ -16195,6 +16206,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours -  luchtfoto''s 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16218,7 +16232,7 @@ msgid "Hamburg (DK5)"
 msgstr "Hamburg (DK5)"
 
 msgid "Bavaria (80 cm)"
-msgstr ""
+msgstr "Beieren (80 cm)"
 
 msgid "Bavaria (2 m)"
 msgstr "Beieren (2 m)"
@@ -16492,6 +16506,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (luchtfoto)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paden)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16678,12 +16695,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historisch (OSM-Best)"
 
@@ -16943,6 +16966,16 @@ msgstr ""
 "draaien langs een gekozen draaipunt."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16992,19 +17025,14 @@ msgstr ""
 "Implementeert een opdrachtregel end maakt het u mogelijk uw opdrachten te "
 "maken. Zie koppeling voor standaard opdrachten (boog, cirkel etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Verschaft de bibliotheek Commons Imaging. Niet bedoeld om direct door "
-"gebruikers te worden geïnstalleerd, maar meer als afhankelijkheid voor "
-"andere plug-ins."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Waarschuwing: Experimenteel!) Gebreedschap voor samenvoegen (samensmelten) "
 "van gegevens."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Maak een raster van wegen."
 
@@ -17409,6 +17437,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Maak rijtjeswoningen uit één enkel blok."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17748,63 +17781,9 @@ msgstr "Bedrijf"
 msgid "Service Times"
 msgstr "Tijden diensten"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "zonsopkomst, zonsondergang"
-
-msgid "Su 09:30,11:00"
-msgstr "Zo 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Za,Zo,Feestdagen 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "za 18:00; zo 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"vr 08:00-18:00; 10-15 apr. gesl.;  juni 07:00-20:00; aug gesl.; 24 dec 08:00-"
-"24:00"
-
-msgid "Sa 10:00+"
-msgstr "za 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 vr 09:00-12:00; week 2-52/2 wo 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Openingstijden"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "za-zo 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "ma-vr 08:30-20:00; za,zo 08:00-15:00;  feestdagen gesl."
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Ma-Vr 08:30-20:00, Di-Zo 08:00-15:00; Za 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"ma-zo 08:00-18:00; 10-15 apr. gesl. ; juni 08:00-14:00; aug gesl.; 25 dec. "
-"gesl."
-
-msgid "sunrise-sunset"
-msgstr "zonsopkomst - zonsondergang"
-
-msgid "Su 10:00+"
-msgstr "zo 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Rolstoelen"
 
@@ -19161,7 +19140,7 @@ msgid "Hedge"
 msgstr "Haag"
 
 msgid "Genus"
-msgstr "Genre"
+msgstr "Geslacht"
 
 msgid "Species"
 msgstr "Soort"
@@ -19720,7 +19699,7 @@ msgid "Railway Switch"
 msgstr "wissel spoorweg"
 
 msgid "Railway milestone"
-msgstr ""
+msgstr "Element spoorweg"
 
 msgid "Aerialway"
 msgstr "Kabelbaan"
@@ -20325,6 +20304,33 @@ msgstr "Jeugdherberg"
 msgid "Alpine Hut"
 msgstr "Berghut"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Toegangsrechten"
+
+msgid "Shower"
+msgstr "Douche"
+
+msgid "seasonal"
+msgstr "seizoengebonden"
+
+msgid "Reservation"
+msgstr "Reservering"
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Uitgebreide beschrijving"
+
 msgid "Caravan Site/RV Park"
 msgstr "Caravanpark/Camperpark"
 
@@ -20436,12 +20442,6 @@ msgstr "Biertuin"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Nachtclub"
-
-msgid "Strip Club"
-msgstr "Stripclub"
-
 msgid "Tourism"
 msgstr "Toerisme"
 
@@ -20493,9 +20493,6 @@ msgstr "stad"
 msgid "region"
 msgstr "regio"
 
-msgid "Closer Description"
-msgstr "Uitgebreide beschrijving"
-
 msgid "Routes shown for:"
 msgstr "Weergegeven routes voor:"
 
@@ -20619,12 +20616,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Paardrijden"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Bordeel"
-
 msgid "Playground"
 msgstr "Speelveld"
 
@@ -20656,6 +20647,18 @@ msgstr "Visstek"
 msgid "Private Swimming Pool"
 msgstr "Privézwembad"
 
+msgid "Night Club"
+msgstr "Nachtclub"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Stripclub"
+
+msgid "Brothel"
+msgstr "Bordeel"
+
 msgid "Culture"
 msgstr "Cultuur"
 
@@ -20963,11 +20966,17 @@ msgstr "Dierenarts"
 msgid "Toilets/Restrooms"
 msgstr "Toiletten/Wasruimten"
 
-msgid "Access rights"
-msgstr "Toegangsrechten"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "seizoengebonden"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "spoelen"
@@ -20996,39 +21005,27 @@ msgstr "Frans toilet"
 msgid "urinal"
 msgstr "urinoir"
 
-msgid "Shower"
-msgstr "Douche"
-
 msgid "Post Box"
 msgstr "Brievenbus"
 
 msgid "Collection times"
 msgstr "Tijden legen"
 
-msgid "Mo-Sa 09:00"
-msgstr "Ma-Za 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Ma-Vr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Ma-Vr 15:00,19:00; Za 15:10; Zo 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "pilaar"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "lamp"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "muur"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "meter"
 
 msgid "Drive through"
 msgstr "Overdekt"
@@ -21307,6 +21304,24 @@ msgstr "afzuiging"
 msgid "Count"
 msgstr "Aantal"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr "Blitzventiel"
+
+msgid "Schrader"
+msgstr "Autoventiel"
+
+msgid "Sclaverand (Presta)"
+msgstr "Frans ventiel"
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Advertentiekolom"
 
@@ -21994,9 +22009,6 @@ msgstr "Vuurtoren"
 msgid "Street Lamp"
 msgstr "Straatlantaarn"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Ma-Vr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Meetstation"
 
@@ -22205,7 +22217,7 @@ msgid "abutment"
 msgstr "bruggenhoofd"
 
 msgid "lift_pier"
-msgstr ""
+msgstr "hefbrug"
 
 msgid "pivot_pier"
 msgstr ""
@@ -22223,7 +22235,7 @@ msgid "Power Generator"
 msgstr "Energievoorziening"
 
 msgid "Biofuel Power Generator"
-msgstr ""
+msgstr "Biobrandstof energiegenerator"
 
 msgid "Generator Type"
 msgstr "Type generator"
@@ -22620,7 +22632,7 @@ msgstr ""
 
 msgctxt "power"
 msgid "synchronous_condenser"
-msgstr ""
+msgstr "synchrone condensatie"
 
 msgctxt "power"
 msgid "filter"
@@ -22685,7 +22697,7 @@ msgstr "anker"
 
 msgctxt "power"
 msgid "termination"
-msgstr ""
+msgstr "eindstation"
 
 msgctxt "power"
 msgid "branch"
@@ -22693,30 +22705,30 @@ msgstr "zijtak"
 
 msgctxt "power"
 msgid "transposing"
-msgstr ""
+msgstr "overdracht"
 
 msgctxt "power"
 msgid "crossing"
-msgstr ""
+msgstr "kruis"
 
 msgid "Branch tower type"
-msgstr ""
+msgstr "Type mast"
 
 msgctxt "power"
 msgid "tap"
-msgstr ""
+msgstr "taps"
 
 msgctxt "power"
 msgid "split"
-msgstr ""
+msgstr "gesplitst"
 
 msgctxt "power"
 msgid "loop"
-msgstr ""
+msgstr "lus"
 
 msgctxt "power"
 msgid "cross"
-msgstr ""
+msgstr "kruis"
 
 msgid "Tower design"
 msgstr "Ontwerp mast"
@@ -23134,11 +23146,8 @@ msgstr "Krantenkiosk"
 msgid "Ticket"
 msgstr "Kaarten"
 
-msgid "Department Store"
-msgstr "Warenhuis"
-
-msgid "Mall"
-msgstr "Winkelcentrum"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Drogisterij"
@@ -23164,12 +23173,15 @@ msgstr "Medische hulpmiddelen"
 msgid "Jewellery"
 msgstr "Juwelier"
 
-msgid "Gift/Souvenir"
-msgstr "Kadoshop/Souveniers"
-
 msgid "Erotic"
 msgstr "Seksshop"
 
+msgid "Department Store"
+msgstr "Warenhuis"
+
+msgid "Mall"
+msgstr "Winkelcentrum"
+
 msgid "Florist"
 msgstr "Bloemist"
 
@@ -23194,6 +23206,9 @@ msgstr "Muziekinstrumenten"
 msgid "Toys"
 msgstr "Speelgoed"
 
+msgid "Gift/Souvenir"
+msgstr "Kadoshop/Souveniers"
+
 msgid "Variety Store"
 msgstr "Euroshop"
 
@@ -23209,6 +23224,9 @@ msgstr "Tassen"
 msgid "Pet"
 msgstr "Dierenwinkel"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Uitvaartverzorgers"
 
@@ -23432,7 +23450,7 @@ msgid "contiguous"
 msgstr "doorlopend"
 
 msgid "eez"
-msgstr ""
+msgstr "eez"
 
 msgid "Places"
 msgstr "Locaties"
@@ -23678,34 +23696,40 @@ msgid "Sand"
 msgstr "Zand"
 
 msgid "Large area covered with sand."
-msgstr ""
+msgstr "groot gebied bedekt met zand."
 
 msgid "Bare Rock"
-msgstr ""
+msgstr "Kale steen"
 
 msgid ""
 "For areas of solid visible rock that is sparsely vegetated or not vegetated "
 "at all."
 msgstr ""
+"Voor gebieden van vaste zichtbare stenen die schaars zijn begroeid of in het "
+"geheel niet begroeid."
 
 msgid "Rock"
-msgstr ""
+msgstr "Steen"
 
 msgid ""
 "A notable rock or group of rocks, with at least one of them firmly attached "
 "to the underlying bedrock."
 msgstr ""
+"Een opvallende steen of groep stenen, waarvan ten minste één fors is "
+"verankerd in de onderliggende steenbodem."
 
 msgid "Tourism attraction"
-msgstr ""
+msgstr "Touristische attractie"
 
 msgid "Stone"
-msgstr ""
+msgstr "Steen"
 
 msgid ""
 "A single notable free-standing rock, which may differ from the composition "
 "of the terrain it lies in."
 msgstr ""
+"Eén enkele opvallende vrijstaande steen, die kan verschillen van de "
+"compositie van het terrein waarin hij ligt."
 
 msgid "Land use"
 msgstr "Grondgebruik"
@@ -23729,7 +23753,7 @@ msgid "Greenhouse Horticulture"
 msgstr "Glastuinbouw"
 
 msgid "Plant Nursery"
-msgstr ""
+msgstr "Plantenkwekerij"
 
 msgid "Allotments"
 msgstr "Volkstuinen"
@@ -23762,7 +23786,7 @@ msgid "Cemetery"
 msgstr "Begraafplaats"
 
 msgid "Religious"
-msgstr ""
+msgstr "Religieus"
 
 msgid "Retail"
 msgstr "Winkelcentrum"
@@ -23777,13 +23801,13 @@ msgid "Garages"
 msgstr "Garages"
 
 msgid "Railway Land"
-msgstr ""
+msgstr "Land van spoorweg"
 
 msgid "Military"
 msgstr "Militair terrein"
 
 msgid "Construction Area"
-msgstr ""
+msgstr "Bouwgrond"
 
 msgid "Brownfield"
 msgstr "Braakliggende grond"
@@ -23843,10 +23867,10 @@ msgid "House name"
 msgstr "Huisnaam"
 
 msgid "Subdistrict"
-msgstr ""
+msgstr "Subdistrict"
 
 msgid "District"
-msgstr ""
+msgstr "District"
 
 msgid "Province"
 msgstr "Provincie"
@@ -24045,7 +24069,7 @@ msgid "potential"
 msgstr "potentieel"
 
 msgid "Contact (Common Schema)"
-msgstr ""
+msgstr "Contact (algemeen schema)"
 
 msgid "Email Address"
 msgstr "E-mailadres"
@@ -24057,21 +24081,23 @@ msgid "Image"
 msgstr "Afbeelding"
 
 msgid "Contact (Schema with ''contact:*'' Prefix)"
-msgstr ""
+msgstr "Contact (Schema met voorvoegsel ''contact:*'')"
 
 msgctxt "description=*"
 msgid "A short text with additional information."
-msgstr ""
+msgstr "Een korte tekst met aanvullende informatie."
 
 msgctxt "description=*"
 msgid ""
 "It might be viewable to the end user (perhaps using a search system or a map "
 "with pop-ups)."
 msgstr ""
+"Het zou zichtbaar kunnen zijn voor de eindgebruiker (misschien met behulp "
+"van een zoeksysteem of een kaart met pop-ups)."
 
 msgctxt "note=*, fixme=*, description=*"
 msgid "Similar but different tags:"
-msgstr ""
+msgstr "Soortgelijk maar met andere tags:"
 
 msgctxt "the tag note=*"
 msgid "Note"
@@ -24080,15 +24106,18 @@ msgstr "Notitie"
 msgctxt "note=*"
 msgid "An important hint for other mappers (not for the end user)."
 msgstr ""
+"Een belangrijke hint voor andere mappers (niet voor d eindgebruiker)."
 
 msgid "Fixme"
-msgstr ""
+msgstr "Fixme"
 
 msgctxt "fixme=*"
 msgid ""
 "A hint for other mappers (not for the end user), that an object needs an "
 "improvement."
 msgstr ""
+"Een hint voor andere mappers (niet voor de eindgebruiker), dat een object "
+"een verbetering nodig heeft."
 
 msgid "outer segment"
 msgstr "buitensegment"
@@ -24106,19 +24135,19 @@ msgid "administrative"
 msgstr "provincie/gemeente"
 
 msgid "maritime"
-msgstr ""
+msgstr "maritiem"
 
 msgid "national_park"
-msgstr ""
+msgstr "nationaal_park"
 
 msgid "political"
 msgstr "kiesdistrict"
 
 msgid "postal_code"
-msgstr ""
+msgstr "post_code"
 
 msgid "protected_area"
-msgstr ""
+msgstr "beschermd_gebied"
 
 msgid "Sub area"
 msgstr "Deeloppervlak"
@@ -24202,7 +24231,7 @@ msgid "mindistance"
 msgstr "minafstand"
 
 msgid "check"
-msgstr ""
+msgstr "controle"
 
 msgid "Max. height (meters, only if enforcement=maxheight)"
 msgstr "Max. hoogte (meters, alleen als handhaving=maxhoogte)"
@@ -24226,52 +24255,52 @@ msgid "traffic light or barrier that stops you"
 msgstr "verkeerslicht of barrière die u stopt"
 
 msgid "Routes"
-msgstr ""
+msgstr "Routes"
 
 msgid "Bicycle Route"
 msgstr "Fietsroute"
 
 msgid "icn"
-msgstr ""
+msgstr "icn"
 
 msgid "ncn"
-msgstr ""
+msgstr "ncn"
 
 msgid "rcn"
-msgstr ""
+msgstr "rcn"
 
 msgid "lcn"
-msgstr ""
+msgstr "lcn"
 
 msgid "Mountain Biking Route"
-msgstr ""
+msgstr "Mountain bike-route"
 
 msgid "Hiking Route"
-msgstr ""
+msgstr "Wandelroute"
 
 msgid "iwn"
-msgstr ""
+msgstr "iwn"
 
 msgid "nwn"
-msgstr ""
+msgstr "nwn"
 
 msgid "rwn"
-msgstr ""
+msgstr "rwn"
 
 msgid "lwn"
-msgstr ""
+msgstr "lwn"
 
 msgid "infrastructure"
-msgstr ""
+msgstr "infrastructuur"
 
 msgid "natural"
 msgstr "natuurlijk"
 
 msgid "Piste Route"
-msgstr ""
+msgstr "Piste-route"
 
 msgid "link segment"
-msgstr ""
+msgstr "segment koppeling"
 
 msgid "shortcut segment"
 msgstr ""
@@ -24280,34 +24309,34 @@ msgid "variant segment"
 msgstr ""
 
 msgid "entry points"
-msgstr ""
+msgstr "ingangen"
 
 msgid "Ski Route"
-msgstr ""
+msgstr "Ski-route"
 
 msgid "alpine"
-msgstr ""
+msgstr "alpine"
 
 msgid "Detour Route"
-msgstr ""
+msgstr "Omleidingsroute"
 
 msgid "Destination"
-msgstr ""
+msgstr "Bestemming"
 
 msgid "Ref of the way this is a detour to"
-msgstr ""
+msgstr "Verwijzing van de weg dit is een omleiding naar"
 
 msgid "fork node for alternative routes"
-msgstr ""
+msgstr "node aftakken voor alternatieve routes"
 
 msgid "Power Route"
-msgstr ""
+msgstr "Electriciteitsroute"
 
 msgid "Railway Route"
-msgstr ""
+msgstr "Spoorwegroute"
 
 msgid "Road Route"
-msgstr ""
+msgstr "Wegroute"
 
 msgid "Route Network"
 msgstr "Route Netwerk"
@@ -24337,7 +24366,7 @@ msgid "anything related to the street"
 msgstr "alees wat is gerelateerd aan de straat"
 
 msgid "Destination Sign"
-msgstr ""
+msgstr "Bestemmingsbord"
 
 msgid "Destination written on sign (w/o distance)"
 msgstr "Bestemming vermeld op teken (zonder afstand)"
@@ -24382,7 +24411,7 @@ msgid "ditch"
 msgstr "gracht"
 
 msgid "Name of river/lake/sea/ocean it runs into"
-msgstr ""
+msgstr "Naam van de rivier/meer/zee/oceaan waar hij naartoe loopt"
 
 msgid "Reference Sandre (FR)"
 msgstr "Verwijzing Sandre (FR)"
@@ -24454,7 +24483,7 @@ msgid "Test"
 msgstr "Test"
 
 msgid "Decreasing house numbers in addresses interpolation"
-msgstr ""
+msgstr "Aflopende huisnummers in interpolatie van adressen"
 
 msgid "{0} without {1}"
 msgstr "{0} zonder {1}"
@@ -24463,22 +24492,22 @@ msgid "{0} without {1} or {2}"
 msgstr "{0} zonder {1} of {2}"
 
 msgid "{0} without {1}, {2} or {3}"
-msgstr ""
+msgstr "{0} zonder {1}, {2} of {3}"
 
 msgid "{0} together with {1}"
-msgstr ""
+msgstr "{0} samen met {1}"
 
 msgid "incomplete object: only {0}"
-msgstr ""
+msgstr "incompleet object: alleen {0}"
 
 msgid "incomplete object: only {0} and {1}"
-msgstr ""
+msgstr "incompleet object: alleen {0} en {1}"
 
 msgid "{0} together with addr:*"
-msgstr ""
+msgstr "{0} samen met addr:*"
 
 msgid "{0} together with {1} and conflicting values"
-msgstr ""
+msgstr "{0} samen met {1} en conflicterende waarden"
 
 msgid "{0} on suspicious object"
 msgstr "{0} op verdacht object"
@@ -24493,28 +24522,28 @@ msgid "natural water used for swimming pool"
 msgstr "natuurlijk water gebruikt als zwembad"
 
 msgid "sport without physical feature"
-msgstr ""
+msgstr "sport zonder fysiek object"
 
 msgid "{0} should be on the node where {1} and {2} intersect"
-msgstr ""
+msgstr "{0} zou op de node moeten zijn waar {1} en {2} kruisen"
 
 msgid "alternative name without {0}"
-msgstr ""
+msgstr "alternatiev naam zonder {0}"
 
 msgid "incomplete usage of {0} on a way without {1}"
-msgstr ""
+msgstr "onvolledig gebruik van {0} op een weg zonder {1}"
 
 msgid "Same value of {0} and {1}"
-msgstr ""
+msgstr "Dezelfde waarde voor {0} en {1}"
 
 msgid "Same value of {0}, {1} and {2}"
-msgstr ""
+msgstr "Dezelfde waarde voor {0}, {1} en {2}"
 
 msgid "{0} and {1} together with {2} and conflicting values"
-msgstr ""
+msgstr "{0} en {1} samen met {2} en conflicterende waarden"
 
 msgid "Suspicious tag combination: {0} and {1}"
-msgstr ""
+msgstr "Verdachte tagcombinatie: {0} en {1}"
 
 msgid "{0}={1} is deprecated"
 msgstr "{0}={1} is vervallen"
@@ -24524,75 +24553,89 @@ msgstr "{0} is vervallen"
 
 msgid "''{0}'' is meaningless, use more specific tags, e.g. ''{1}''"
 msgstr ""
+"''{0}'' is zonder betekenis, gebruik meer specifieke tags, bijv. ''{1}''"
 
 msgid ""
 "''{0}'' does not specify the official mode of transportation, use ''{1}'' "
 "for example"
 msgstr ""
+"''{0}'' specificeert niet de officiële soort transport, gebruik bijvoorbeeld "
+"''{1}''"
 
 msgid ""
 "{0}={1} is unspecific. Instead of ''{1}'' please give more information about "
 "what exactly should be fixed."
 msgstr ""
+"{0}={1} is niet specifiek. Geef, in plaats van ''{1}'', meer informatie over "
+"wat exact zou moeten worden gerepareerd."
 
 msgid "{0}={1} is deprecated. Please use instead a multipolygon."
-msgstr ""
+msgstr "{0}={1} is vervallen. Gebruik in plaats daarvan een multipolygoon."
 
 msgid ""
 "{0} is deprecated. Please specify interval by using opening_hours syntax"
 msgstr ""
+"{0} is vervallen. Specificeer de interval door middel van de syntaxis voor "
+"opening_hours"
 
 msgid ""
 "{0} is deprecated. Please delete this object and use a private layer instead"
 msgstr ""
+"{0} is vervallen. Verwijder dit object en gebruik in plaats daarvan een "
+"private laag"
 
 msgid "{0}={1} is unspecific. Please replace ''{1}'' by a specific value."
 msgstr ""
+"{0}={1} is niet specifiek. Vervang ''{1}'' door een specifieke waarde."
 
 msgid "{0} should be replaced with {1}"
-msgstr ""
+msgstr "{0} zou moeten worden vervangen door {1}"
 
 msgid "{0} = {1}; remove {0}"
-msgstr ""
+msgstr "{0} = {1}; verwijder {0}"
 
 msgid ""
 "{0}={1} is unspecific. Please replace ''{1}'' by ''left'', ''right'' or "
 "''both''."
 msgstr ""
+"{0}={1} is niet specifiek. Vervang ''{1}'' door ''links'', ''rechts'' of "
+"''beide''."
 
 msgid "Unspecific tag {0}"
-msgstr ""
+msgstr "Niet specifieke tag {0}"
 
 msgid "Definition of {0} is unclear"
-msgstr ""
+msgstr "Definitie van {0} is niet helder"
 
 msgid ""
 "{0} is not recommended. Use the Reverse Ways function from the Tools menu."
 msgstr ""
+"{0} wordt niet aanbevolen. Gebruik de functie Wegen omkeren uit het menu "
+"Gereedschappen."
 
 msgid "key with uncommon character"
-msgstr ""
+msgstr "sleutel met niet algemeen teken"
 
 msgid "uncommon short key"
-msgstr ""
+msgstr "niet algemene korte sleutel"
 
 msgid "{0} is inaccurate"
-msgstr ""
+msgstr "{0} is niet accuraat"
 
 msgid "{0} on a node. Should be used on a way."
-msgstr ""
+msgstr "{0} op een knoop. Zou moeten wordne gebruikt op een weg."
 
 msgid "{0} on a node. Should be drawn as an area."
-msgstr ""
+msgstr "{0} op een knoop. Zou moeten worden getekend als een gebied."
 
 msgid "{0}=* on a node. Should be used in a relation"
-msgstr ""
+msgstr "{0}=* op een knoop. Zou moeten worden gebruikt in een relatie"
 
 msgid "{0} on a way. Should be used on a node."
-msgstr ""
+msgstr "{0} op een weg. Zou moeten worden gebruikt op een knoop."
 
 msgid "{0} on a way. Should be used in a relation"
-msgstr ""
+msgstr "{0} op een weg. Zou moeten worden gebruikt in een relatie"
 
 msgid "{0} on a node"
 msgstr "{0} op een knoop"
@@ -24616,10 +24659,10 @@ msgid "Overlapping Identical Landuses"
 msgstr "Overlappende identieke Landuses"
 
 msgid "{0} must be connected to a way"
-msgstr ""
+msgstr "{0} moet worden verbonden aan een weg"
 
 msgid "node connects waterway and bridge"
-msgstr ""
+msgstr "knoop verbindt waterweg en brug"
 
 msgid "abbreviated street name"
 msgstr "afgekorte straatnaam"
@@ -24646,12 +24689,14 @@ msgid ""
 "Value of ''{0}'' should either be ''{1}'' or ''{2}''. For sidewalks use "
 "''{3}'' instead."
 msgstr ""
+"Waarde van ''{0}'' zou ''{1}'' of ''{2}'' moeten zijn. gebruik in plaats "
+"daarvan ''{3}'' voor trottoirs."
 
 msgid "{0} with multiple values"
-msgstr ""
+msgstr "{0} met meerdere waarden"
 
 msgid "empty value in semicolon-separated ''{0}''"
-msgstr ""
+msgstr "lege waarde in punt-kommagescheiden ''{0}''"
 
 msgid "numerical key"
 msgstr "numerieke toets"
@@ -24674,6 +24719,8 @@ msgstr ""
 msgid ""
 "{0}: tonne is default; period is separator; if units, put space then unit"
 msgstr ""
+"{0}: ton is standaard; punt is scheidingsteken; indien eenheden, plaats "
+"spatie, dan eenheid"
 
 msgid "unusual {0} format"
 msgstr "ongebruikelijke indeling {0}"
@@ -24682,6 +24729,8 @@ msgid ""
 "{0}: kilometers is default; period is separator; if units, put space then "
 "unit"
 msgstr ""
+"{0}: kilometer is standaard; punt is scheidingsteken; indien eenheden, "
+"plaats spatie, dan eenheid"
 
 msgid "voltage should be in volts with no units/delimiter/spaces"
 msgstr ""
@@ -24702,7 +24751,7 @@ msgid "{0} must be a numeric value"
 msgstr "{0} moet een numerieke waarde zijn"
 
 msgid "{0} must be a positive integer number"
-msgstr ""
+msgstr "{0} moet een positief geheel getal zijn"
 
 msgid "relation without type"
 msgstr "relatie zonder type"
@@ -24744,22 +24793,24 @@ msgid "unknown language prefix in wikipedia tag"
 msgstr "onbekend voorvoegsel voor taal in tag wikipedia"
 
 msgid "deprecated format for wikipedia tag"
-msgstr ""
+msgstr "vervallen opmaak voor tag wikipedia"
 
 msgid "''wikipedia''=''language:page title''"
-msgstr ""
+msgstr "''wikipedia''=''language:page title''"
 
 msgid "Hide icons at low zoom"
-msgstr ""
+msgstr "Pictogrammen bij laag zoomen verbergen"
 
 msgid "Less obtrusive node symbols at low zoom"
 msgstr ""
+"Minder nadrukkelijk aanwezige symbolen voor knopen bij laag zoomniveau"
 
 msgid "Display street labels (at high zoom)"
-msgstr ""
+msgstr "Straatlabels weergeven (op hoog zoomniveau)"
 
 msgid "Use alternative turn restriction icon set"
 msgstr ""
+"Alternatieve verzameling pictogrammen voor Turn restriction gebruiken"
 
 msgid "Columbus V-900 CSV Files"
 msgstr "Columbus V-900 CSV-bestanden"
@@ -24798,18 +24849,23 @@ msgid ""
 "No command has been found. Would you like to download and install default "
 "commands now?"
 msgstr ""
+"Geen opdracht gevonden. Wilt u nu standaard opdrachten downloaden en "
+"installeren?"
 
 msgid "No command found"
-msgstr ""
+msgstr "Geen opdracht gevonden"
 
 msgid "Default commands have been successfully installed"
-msgstr ""
+msgstr "Standaard opdrachten zijn met succes geïnstalleerd"
 
 msgid ""
 "Failed to download and install default commands.\n"
 "\n"
 "Error: {0}"
 msgstr ""
+"Downloaden en installeren van standaard opdrachten mislukt.\n"
+"\n"
+"Fout: {0}"
 
 msgid "Processing..."
 msgstr "Verwerken..."
@@ -25069,7 +25125,7 @@ msgid "Add fixed points on spacebar"
 msgstr "Vaste punten met spatiebalk toevoegen"
 
 msgid "Allow edit existing ways"
-msgstr ""
+msgstr "bewerken van bestaande wegen toestaan"
 
 msgid "Draw closed polygons only"
 msgstr "Teken alleen gesloten polygonen"
@@ -25154,9 +25210,6 @@ msgstr "Zoek en repareer adressen zonder (geldige) straten."
 msgid "Address Edit"
 msgstr "Adres bewerken"
 
-msgid "Searching"
-msgstr "Zoeken"
-
 msgid "Guess values for "
 msgstr "Geschatte waarden voor "
 
@@ -25349,7 +25402,7 @@ msgid "NanoLog of {0} lines, {1} of them with coordinates."
 msgstr "NanoLog van {0} regels, {1} ervan met coördinaten."
 
 msgid "Correlate with GPX..."
-msgstr ""
+msgstr "Correleer met GPX..."
 
 msgid "Put on GPX..."
 msgstr ""
@@ -25358,7 +25411,7 @@ msgid "Correlate entries with GPS trace"
 msgstr ""
 
 msgid "Save layer..."
-msgstr ""
+msgstr "Laag opslaan..."
 
 msgid "Save NanoLog layer"
 msgstr ""
@@ -25460,9 +25513,6 @@ msgstr "Vorige bug OSMI"
 msgid "Next OSMI bug"
 msgstr "Volgende bug OSM"
 
-msgid "Osm Inspector Bugs"
-msgstr "Osm Inspector Bugs"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector Bugs"
 
@@ -25940,13 +25990,13 @@ msgid "House number:"
 msgstr "Huisnummer:"
 
 msgid "Street:"
-msgstr ""
+msgstr "Straat:"
 
 msgid "Post code:"
-msgstr ""
+msgstr "Postcode:"
 
 msgid "Building:"
-msgstr ""
+msgstr "Gebouw:"
 
 msgid "Tags:"
 msgstr ""
@@ -26237,17 +26287,6 @@ msgid "Auto sourcing"
 msgstr "Automatisch vullen"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Plug-in cadastre-fr gebruikt de sneltoets F11 om te pakken,\n"
-"wat nu is toegewezen aan de schakelaar voor volledig scherm.\n"
-"De nieuwe toets om te pakken is F10, maar u kunt de toets in de instellingen "
-"voor de sneltoetsen wijzigen zoals u dat wilt."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26933,6 +26972,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adres"
 
@@ -28467,12 +28582,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -28488,6 +28609,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -31093,6 +31217,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Rijtjeshuizen"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Kan geen knoop buiten de wereld plaatsen."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Bladeren"
 
diff --git a/i18n/po/nn.po b/i18n/po/nn.po
index 8e914a3..6c33bc0 100644
--- a/i18n/po/nn.po
+++ b/i18n/po/nn.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-07-15 12:49+0000\n"
 "Last-Translator: Skippern <Unknown>\n"
 "Language-Team: Norwegian Nynorsk <nn at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:54+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:52+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: nn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/oc.po b/i18n/po/oc.po
index 91c078b..097735a 100644
--- a/i18n/po/oc.po
+++ b/i18n/po/oc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-10-03 22:14+0000\n"
 "Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary at yahoo.fr>\n"
 "Language-Team: Occitan (post 1500) <oc at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:55+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:52+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1370,6 +1370,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2088,17 +2097,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2510,6 +2513,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2531,6 +2540,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4366,9 +4383,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incomplet"
 
@@ -7858,9 +7872,6 @@ msgstr "Relacion {0}"
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8757,6 +8768,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8856,6 +8870,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10788,9 +10809,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11859,34 +11877,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr "Prereglatges"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11917,52 +11953,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Prereglatges"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12309,10 +12327,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14459,6 +14473,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14751,6 +14768,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14937,12 +14957,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15197,6 +15223,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15230,12 +15266,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15542,6 +15576,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15857,59 +15896,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18396,6 +18385,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18507,12 +18523,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18564,9 +18574,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18688,12 +18695,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18725,6 +18726,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19032,10 +19045,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19065,24 +19084,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19376,6 +19383,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20063,9 +20088,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21201,10 +21223,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21231,10 +21250,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21261,6 +21283,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21276,6 +21301,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23192,9 +23220,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23488,9 +23513,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24145,13 +24167,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24777,6 +24792,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26210,12 +26301,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26231,6 +26328,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28690,6 +28790,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/pa.po b/i18n/po/pa.po
index 25b9a1b..67d2eee 100644
--- a/i18n/po/pa.po
+++ b/i18n/po/pa.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-05-06 15:52+0000\n"
 "Last-Translator: A S Alam <aalam at users.sf.net>\n"
 "Language-Team: Punjabi <pa at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:55+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:53+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: pa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/pl.po b/i18n/po/pl.po
index 5344401..f3e59d0 100644
--- a/i18n/po/pl.po
+++ b/i18n/po/pl.po
@@ -7,17 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-09 09:05+0000\n"
-"Last-Translator: Maciej Kowalik <m.kowalik.79 at gmail.com>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-23 04:07+0000\n"
+"Last-Translator: Daniel Koć <daniel at xn--ko-wla.pl>\n"
 "Language-Team: Polish <josm-lang-pl at googlegroups.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:56+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:54+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: pl\n"
 "X-Poedit-Bookmarks: 1098,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
 "X-Poedit-Basepath: /home/mfloryan/dev/josm/i18n/\n"
@@ -582,7 +582,7 @@ msgid "Show history"
 msgstr "Pokaż historię"
 
 msgid "History (web)"
-msgstr "Historia (strona www)"
+msgstr "Historia (strona internetowa)"
 
 msgid ""
 "Display history information about OSM ways, nodes, or relations in web "
@@ -1487,6 +1487,15 @@ msgstr[2] ""
 "Więcej niż jedna linia używa wybranych węzłów. Zaznacz także linię, którą "
 "chcesz podzielić."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Który fragment ma zachować historię linii {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segment {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Musisz wybrać dwa lub więcej węzłów aby rozdzielić linię okrężną."
 
@@ -2280,18 +2289,12 @@ msgstr ""
 "Kliknij, aby przesunąć podświetlony węzeł. Przytrzymaj Ctrl, aby dodać nowy "
 "węzeł, Alt aby usunąć."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Nie mogę umieścić węzła poza obszarem świata."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Dodaj nowy węzeł do linii"
 msgstr[1] "Dodaj nowy węzeł do {0} linii"
 msgstr[2] "Dodaj nowy węzeł do {0} linii"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Nie można usunąć węzła, do którego odnosi się wiele obiektów"
-
 msgid "Cannot delete node that has tags"
 msgstr "Nie można usunąć węzła zawierającego tagi"
 
@@ -2568,7 +2571,7 @@ msgid "regular expression"
 msgstr "wyrażenie regularne"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "Selektor MapCSS"
 
 msgid "add toolbar button"
 msgstr "dodaj przycisk na pasku narzędzi"
@@ -2742,6 +2745,12 @@ msgstr "wszystkie dzieci obiektów pasujących do wyrażenia"
 msgid "all parents of objects matching the expression"
 msgstr "wszyscy rodzice obiektów pasujących do wyrażenia"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ty członek relacji i/lub n-ty węzeł linii"
 
@@ -2766,6 +2775,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "obiekty (i wszystkie jego węzły linii / członków relacji) w pobranym obszarze"
 
+msgid "Searching"
+msgstr "Szukanie"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Nie znaleziono nic szukając ''{0}''"
 
@@ -4763,9 +4780,6 @@ msgstr "Nie pokazuj ponownie (dla tej sesji)"
 msgid "Do not show again (remembers choice)"
 msgstr "Nie pokazuj ponownie (zapamiętaj wybór)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "niekompletne"
 
@@ -6520,7 +6534,7 @@ msgid "unknown"
 msgstr "nieznany"
 
 msgid "Enter the coordinates for the new node."
-msgstr ""
+msgstr "Podaj współrzędne nowego węzła."
 
 msgid ""
 "You can separate longitude and latitude with space, comma or semicolon."
@@ -7527,13 +7541,15 @@ msgstr "{0} ''{1}''"
 
 msgid "{0} different"
 msgid_plural "{0} different"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} różny"
+msgstr[1] "{0} różne"
+msgstr[2] "{0} różnych"
 
 msgid ", {0} unset"
 msgid_plural ", {0} unset"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] ", {0} nieprzypisany"
+msgstr[1] ", {0} nieprzypisane"
+msgstr[2] ", {0} nieprzypisanych"
 
 msgid "Select objects for which to change tags."
 msgstr "Zaznacz obiekty, którym chcesz zmienić znaczniki"
@@ -8496,9 +8512,6 @@ msgstr "Relacja {0}"
 msgid "Object"
 msgstr "Obiekt"
 
-msgid "not present"
-msgstr "nie występuje"
-
 msgid "Changeset comment"
 msgstr "Komentarz zestawu zmian"
 
@@ -9532,6 +9545,9 @@ msgstr "Skala pikselowa: {0}"
 msgid "Best zoom: {0}"
 msgstr "Najlepsze przybliżenie: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Statystyki bufora: {0}"
 
@@ -9637,6 +9653,13 @@ msgstr "Wcześniejszy znacznik"
 msgid "Jump to previous marker"
 msgstr "Przeskocz do poprzedniego znacznika"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Wszystkie odwzorowania są obsługiwane"
 
@@ -11733,9 +11756,6 @@ msgstr "Katalog buforowania kafelków: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maksymalna ilość obiektów w pamięci cache: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12875,35 +12895,53 @@ msgstr "Zmień tagi"
 msgid "Add or remove toolbar button"
 msgstr "Dodaj lub usuń przycisk z paska narzędzi"
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Nieznany typ: {0}"
+
+msgid "Preset group {1} / {0}"
+msgstr "Grupa szablonów {1} / {0}"
+
+msgid "Preset group {0}"
+msgstr "Grupa szablonów {0}"
+
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Więcej informacji na temat tej funkcji"
+msgid "Preset role element without parent"
+msgstr ""
 
-msgid "Available roles"
-msgstr "Dostępne role"
+msgid "Preset sub element without parent"
+msgstr ""
 
-msgid "role"
-msgstr "rola"
+msgid "Error parsing {0}: "
+msgstr "Błąd podczas przetwarzania {0}: "
 
-msgid "count"
-msgstr "liczba"
+msgid "Search preset"
+msgstr "Znajdź szablon"
 
-msgid "elements"
-msgstr "elementy"
+msgid "Show preset search dialog"
+msgstr "Otwiera okno wyszukiwania szablonów"
 
-msgid "Optional Attributes:"
-msgstr "Dodatkowe atrybuty:"
+msgid "Search presets"
+msgstr "Szukaj w szablonach"
 
-msgid "Select auto-increment of {0} for this field"
-msgstr ""
+msgid "Presets"
+msgstr "Szablony"
 
-msgid "Cancel auto-increment for this field"
-msgstr ""
+msgid "Search for objects by preset"
+msgstr "Szukaj obiekty według szablonu"
+
+msgid "Show only applicable to selection"
+msgstr "Pokaż tylko odpowiednie do zaznaczenia"
+
+msgid "Search in tags"
+msgstr "Szukaj w tagach"
+
+msgid "Add toolbar button"
+msgstr "Dodaj przycisk do paska narzędzi"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12933,53 +12971,35 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Nieznany typ: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grupa szablonów {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Grupa szablonów {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
+msgid "More information about this feature"
+msgstr "Więcej informacji na temat tej funkcji"
 
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Dodatkowe atrybuty:"
 
-msgid "Preset role element without parent"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Błąd podczas przetwarzania {0}: "
-
-msgid "Search preset"
-msgstr "Znajdź szablon"
-
-msgid "Show preset search dialog"
-msgstr "Otwiera okno wyszukiwania szablonów"
-
-msgid "Search presets"
-msgstr "Szukaj w szablonach"
+msgid "Available roles"
+msgstr "Dostępne role"
 
-msgid "Presets"
-msgstr "Szablony"
+msgid "role"
+msgstr "rola"
 
-msgid "Search for objects by preset"
-msgstr "Szukaj obiekty według szablonu"
+msgid "count"
+msgstr "liczba"
 
-msgid "Show only applicable to selection"
-msgstr "Pokaż tylko odpowiednie do zaznaczenia"
+msgid "elements"
+msgstr "elementy"
 
-msgid "Search in tags"
-msgstr "Szukaj w tagach"
+msgid "Select auto-increment of {0} for this field"
+msgstr ""
 
-msgid "Add toolbar button"
-msgstr "Dodaj przycisk do paska narzędzi"
+msgid "Cancel auto-increment for this field"
+msgstr ""
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13344,12 +13364,6 @@ msgstr "Powiadamianie"
 msgid "{0} not available (offline mode)"
 msgstr "{0} jest niedostępny (tryb offline)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Nie ma elementu z ID {0} w lokalnym zbiorze danych. Nie można ustalić typu "
-"elementu."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Ściąganie pakietu węzłów z \"{0}\""
 
@@ -15601,6 +15615,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15893,6 +15910,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -16079,12 +16099,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -16339,6 +16365,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16372,12 +16408,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16707,6 +16741,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Dzieli pojedynczy obrys na wiele domów w zabudowie szeregowej."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17022,59 +17061,9 @@ msgstr "Operator"
 msgid "Service Times"
 msgstr "Godziny nabożeństw"
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Godziny otwarcia"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Wózki inwalidzkie"
 
@@ -17112,7 +17101,7 @@ msgid "isolated"
 msgstr "wydzielone pomieszczenie"
 
 msgid "Height (meters)"
-msgstr "Wysokość (metry)"
+msgstr "Wysokość (w metrach)"
 
 msgid "Max. width (meters)"
 msgstr "Maks. szerokość (w metrach)"
@@ -17166,7 +17155,7 @@ msgstr ""
 
 msgctxt "sport"
 msgid "billiards"
-msgstr ""
+msgstr "bilard"
 
 msgctxt "sport"
 msgid "boules"
@@ -17274,7 +17263,7 @@ msgstr ""
 
 msgctxt "sport"
 msgid "running"
-msgstr ""
+msgstr "bieganie"
 
 msgctxt "sport"
 msgid "safety_training"
@@ -17397,13 +17386,13 @@ msgid "Distance (km)"
 msgstr "Odległość (km)"
 
 msgid "Ascent (m)"
-msgstr ""
+msgstr "Wzniesienie (m)"
 
 msgid "Descent (m)"
-msgstr ""
+msgstr "Spadek (m)"
 
 msgid "Roundtrip"
-msgstr ""
+msgstr "Pętla"
 
 msgid "Symbol description"
 msgstr "Opis symboli"
@@ -18335,10 +18324,10 @@ msgid "Traffic Mirror"
 msgstr "Lustro drogowe"
 
 msgid "Highway milestone"
-msgstr ""
+msgstr "Słupek pikietażowy"
 
 msgid "Distance (kilometers)"
-msgstr ""
+msgstr "Odległość (km)"
 
 msgctxt "junction=yes"
 msgid "Named Junction"
@@ -18379,7 +18368,7 @@ msgid "Bollard"
 msgstr "Słupek drogowy"
 
 msgid "Bollard type"
-msgstr ""
+msgstr "Rodzaj słupka"
 
 msgid "rising"
 msgstr ""
@@ -18729,7 +18718,7 @@ msgid "Marina"
 msgstr "Port jachtowy (marina)"
 
 msgid "Dump Station"
-msgstr ""
+msgstr "Zlewnia nieczystości"
 
 msgid "public"
 msgstr "publiczny"
@@ -18965,7 +18954,7 @@ msgid "Railway Switch"
 msgstr "Zwrotnica"
 
 msgid "Railway milestone"
-msgstr ""
+msgstr "Słupek kilometrowy"
 
 msgid "Aerialway"
 msgstr "Koleje linowe"
@@ -19250,7 +19239,7 @@ msgid "Public Bicycle Repair Station"
 msgstr "Publiczna stacja naprawy rowerów"
 
 msgid "Chain tool"
-msgstr ""
+msgstr "Rozkuwacz do łańcucha"
 
 msgid "Public Transport"
 msgstr "Transport publiczny"
@@ -19484,7 +19473,7 @@ msgid "Taxi"
 msgstr "Postój taksówek"
 
 msgid "Airport"
-msgstr "Lotnisko"
+msgstr "Lotnictwo"
 
 msgid "Airport Ground"
 msgstr "Lotnisko"
@@ -19567,6 +19556,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Schronisko górskie"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Prawa dostępu"
+
+msgid "Shower"
+msgstr "Prysznic"
+
+msgid "seasonal"
+msgstr "sezonowo"
+
+msgid "Reservation"
+msgstr "Rezerwacja"
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Opis"
+
 msgid "Caravan Site/RV Park"
 msgstr "Kemping samochodowy"
 
@@ -19678,12 +19694,6 @@ msgstr "Ogródek piwny"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Klub nocny"
-
-msgid "Strip Club"
-msgstr "Klub ze striptizem"
-
 msgid "Tourism"
 msgstr "Turystyka"
 
@@ -19735,9 +19745,6 @@ msgstr "miasto"
 msgid "region"
 msgstr "region"
 
-msgid "Closer Description"
-msgstr "Opis"
-
 msgid "Routes shown for:"
 msgstr "Zaznaczone szlaki:"
 
@@ -19859,12 +19866,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Jazda konna"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Dom publiczny"
-
 msgid "Playground"
 msgstr "Plac zabaw"
 
@@ -19896,6 +19897,18 @@ msgstr "Miejsce do wędkowania"
 msgid "Private Swimming Pool"
 msgstr "Prywatny basen"
 
+msgid "Night Club"
+msgstr "Klub nocny"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Klub ze striptizem"
+
+msgid "Brothel"
+msgstr "Dom publiczny"
+
 msgid "Culture"
 msgstr "Kultura"
 
@@ -20203,11 +20216,17 @@ msgstr "Weterynarz"
 msgid "Toilets/Restrooms"
 msgstr "Toalety"
 
-msgid "Access rights"
-msgstr "Prawa dostępu"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Damska"
 
-msgid "seasonal"
-msgstr "sezonowo"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Męska"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Wspólna"
 
 msgid "flush"
 msgstr ""
@@ -20236,24 +20255,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr "Prysznic"
-
 msgid "Post Box"
 msgstr "Skrzynka pocztowa"
 
 msgid "Collection times"
 msgstr "Czas odbioru"
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20423,7 +20430,7 @@ msgid "Waste Disposal/Dumpster"
 msgstr "Miejsca składowania śmieci"
 
 msgid "Sanitary Dump Station"
-msgstr "Punkt składowania nieczystości"
+msgstr "Zlewnia nieczystości"
 
 msgid "Suction pumpout"
 msgstr ""
@@ -20495,7 +20502,7 @@ msgid "Lock"
 msgstr "Zamykana"
 
 msgid "Indoor"
-msgstr "W pomieszczeniu"
+msgstr "Wewnątrz budynku"
 
 msgid "Fire Hydrant"
 msgstr "Hydrant"
@@ -20547,6 +20554,24 @@ msgstr "ssanie"
 msgid "Count"
 msgstr "Liczba"
 
+msgid "Compressed Air"
+msgstr "Kompresor"
+
+msgid "Valves"
+msgstr "Wentyl"
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Słup ogłoszeniowy"
 
@@ -20618,7 +20643,7 @@ msgid "Track and Field Athletics"
 msgstr "Lekkoatletyka"
 
 msgid "Running"
-msgstr ""
+msgstr "Bieganie"
 
 msgid "Climbing"
 msgstr "Wspinaczka"
@@ -20658,7 +20683,7 @@ msgid "Skating"
 msgstr "Łyżwiarstwo"
 
 msgid "ice_rink"
-msgstr ""
+msgstr "lodowisko"
 
 msgid "Skateboard"
 msgstr "Jazda na deskorolce"
@@ -20796,7 +20821,7 @@ msgid "Basketball"
 msgstr "Koszykówka"
 
 msgid "Handball"
-msgstr ""
+msgstr "Piłka ręczna"
 
 msgid "Volleyball"
 msgstr "Siatkówka"
@@ -20805,7 +20830,7 @@ msgid "Beach Volleyball"
 msgstr "Siatkówka plażowa"
 
 msgid "Billiards"
-msgstr ""
+msgstr "Bilard"
 
 msgid "Golf"
 msgstr "Golf"
@@ -21234,9 +21259,6 @@ msgstr "Latarnia morska"
 msgid "Street Lamp"
 msgstr "Latarnia uliczna"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Pon-Pt 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Stacja pomiarowa"
 
@@ -21388,7 +21410,7 @@ msgid "viaduct"
 msgstr "Wiadukt"
 
 msgid "Structure"
-msgstr ""
+msgstr "Typ konstrukcji"
 
 msgid "arch"
 msgstr ""
@@ -22303,7 +22325,7 @@ msgid "Vacuum Cleaner"
 msgstr "Sklep z odkurzaczami"
 
 msgid "Hifi"
-msgstr "Sklep ze sprzętem hi-fi"
+msgstr "Sprzęt Hi-Fi"
 
 msgid "Video"
 msgstr "Wideo"
@@ -22374,11 +22396,8 @@ msgstr "Sklepik z prasą"
 msgid "Ticket"
 msgstr "Bilety"
 
-msgid "Department Store"
-msgstr "Dom towarowy"
-
-msgid "Mall"
-msgstr "Centrum handlowe"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Drogeria"
@@ -22404,12 +22423,15 @@ msgstr "Sprzęt medyczny"
 msgid "Jewellery"
 msgstr "Jubiler"
 
-msgid "Gift/Souvenir"
-msgstr "Upominki/pamiątki"
-
 msgid "Erotic"
 msgstr "Artykuły erotyczne"
 
+msgid "Department Store"
+msgstr "Dom towarowy"
+
+msgid "Mall"
+msgstr "Centrum handlowe"
+
 msgid "Florist"
 msgstr "Kwiaciarnia"
 
@@ -22434,6 +22456,9 @@ msgstr "Instrumenty muzyczne"
 msgid "Toys"
 msgstr "Sklep z zabawkami"
 
+msgid "Gift/Souvenir"
+msgstr "Upominki/pamiątki"
+
 msgid "Variety Store"
 msgstr "Sklep z różnościami"
 
@@ -22449,6 +22474,9 @@ msgstr "Torebki i walizki"
 msgid "Pet"
 msgstr "Zwierzęta domowe"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Dom pogrzebowy"
 
@@ -23530,7 +23558,7 @@ msgid "Detour Route"
 msgstr "Objazd"
 
 msgid "Destination"
-msgstr ""
+msgstr "Miejsce docelowe"
 
 msgid "Ref of the way this is a detour to"
 msgstr "Numer drogi której dotyczy objazd"
@@ -23581,7 +23609,7 @@ msgid "Destination written on sign (w/o distance)"
 msgstr "Cel podróży na znaku (bez odległości)"
 
 msgid "Time (hh:mm, for trekking)"
-msgstr ""
+msgstr "Czas dojścia (godz:min)"
 
 msgid "Colour of background"
 msgstr "Kolor tła"
@@ -24368,9 +24396,6 @@ msgstr "Znajdź i popraw adresy bez (poprawnej) nazwy ulicy"
 msgid "Address Edit"
 msgstr "Edycja adresu"
 
-msgid "Searching"
-msgstr "Szukanie"
-
 msgid "Guess values for "
 msgstr "Zgadnij wartości dla "
 
@@ -24672,9 +24697,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -25330,13 +25352,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25966,6 +25981,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adres"
 
@@ -27406,12 +27497,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27427,6 +27524,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29904,6 +30004,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Nie mogę umieścić węzła poza obszarem świata."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Przeglądaj"
 
diff --git a/i18n/po/pt.po b/i18n/po/pt.po
index 7943723..2b73819 100644
--- a/i18n/po/pt.po
+++ b/i18n/po/pt.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-09-30 10:20+0000\n"
-"Last-Translator: Ivo Xavier <ivofernandes12 at gmail.com>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-28 01:11+0000\n"
+"Last-Translator: Rui <xande6ruz at yandex.com>\n"
 "Language-Team: Portuguese <pt at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:57+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:54+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: pt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1149,13 +1149,13 @@ msgid "<html>The Overpass wizard could not parse the following query:"
 msgstr ""
 
 msgid "Parse error"
-msgstr ""
+msgstr "Erro de processamento"
 
 msgid "Overpass query: "
 msgstr "Pedido Overpass: "
 
 msgid "Overpass server: "
-msgstr ""
+msgstr "Servidor Overpass: "
 
 msgid "Paste"
 msgstr "Colar"
@@ -1502,6 +1502,15 @@ msgstr[1] ""
 "Os nós selecionados são partilhados por várias linhas. Por favor selecione "
 "também a linha."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Que segmento da linha deve manter o histórico de autores de {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Segmento {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Em linhas fechadas é necessário selecionar pelo menos 2  nós."
 
@@ -2297,17 +2306,11 @@ msgstr ""
 "Clique para mover o nó destacado. Manter CTRL para adicionar um nó. ALT para "
 "eliminar o nó."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Não é possível colocar um nó fora do mundo."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Adicionar um novo nó à linha"
 msgstr[1] "Adicionar um novo nó a {0} linhas"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Não é possível eliminar um nó dependente de vários objetos"
-
 msgid "Cannot delete node that has tags"
 msgstr "Não é possível eliminar um nó que tenha etiquetas"
 
@@ -2570,13 +2573,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Incluir também objetos incompletos e eliminados na procura."
 
 msgid "standard"
-msgstr ""
+msgstr "padrão"
 
 msgid "regular expression"
 msgstr "expressão regular"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "Seletor MapCSS"
 
 msgid "add toolbar button"
 msgstr "adicionar botão com esta pesquisa na barra de ferramentas"
@@ -2753,6 +2756,12 @@ msgstr "todos os filhos dos objetos que correspondam à expressão"
 msgid "all parents of objects matching the expression"
 msgstr "todos os pais dos objetos que correspondam à expressão"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relação contendo um membro com a função <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objetos que façam parte da relação com a função <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 "n-th (número da posição) numa relação e/ou posição de um nó numa linha"
@@ -2780,6 +2789,14 @@ msgstr ""
 "objetos (e todos os seus nós em linhas / membros de relações) na área "
 "descarregada"
 
+msgid "Searching"
+msgstr "A procurar"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "A pesquisar em {0} objeto"
+msgstr[1] "A pesquisar em {0} objetos"
+
 msgid "No match found for ''{0}''"
 msgstr "Não foi encontrado nada com ''{0}''"
 
@@ -2809,7 +2826,7 @@ msgstr "ER"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -2866,7 +2883,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Token inesperado. Esperado {0}, encontrado {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Não foi possível processar o seletor MapCSS"
 
 msgid "Unexpected token: {0}"
 msgstr "Token inesperado: {0}"
@@ -3546,7 +3563,7 @@ msgid "Select WMTS layer"
 msgstr "Selecionar camada WMTS"
 
 msgid "Layer name"
-msgstr ""
+msgstr "Nome da camada"
 
 msgid "Projection"
 msgstr "Projeção"
@@ -4500,7 +4517,7 @@ msgid "Property values contain HTML entity"
 msgstr "Valores das etiquetas contêm entidades HTML"
 
 msgid "Key ''{0}'' looks like ''{1}''."
-msgstr ""
+msgstr "A chave ''{0}'' é parecida com ''{1}''."
 
 msgid "Misspelled property key"
 msgstr ""
@@ -4810,9 +4827,6 @@ msgstr "Não mostrar de novo (nesta sessão)"
 msgid "Do not show again (remembers choice)"
 msgstr "Não mostrar de novo este aviso"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incompleto"
 
@@ -4932,7 +4946,7 @@ msgstr "Alinhamento da imagem de fundo"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "Imagens de fundo"
 
 msgctxt "layer"
 msgid "Offset"
@@ -5178,35 +5192,35 @@ msgstr ""
 
 msgctxt "menu"
 msgid "File"
-msgstr ""
+msgstr "Ficheiro"
 
 msgctxt "menu"
 msgid "Edit"
-msgstr ""
+msgstr "Editar"
 
 msgctxt "menu"
 msgid "View"
-msgstr ""
+msgstr "Visualização"
 
 msgctxt "menu"
 msgid "Tools"
-msgstr ""
+msgstr "Ferramentas"
 
 msgctxt "menu"
 msgid "More tools"
-msgstr ""
+msgstr "Mais ferramentas"
 
 msgctxt "menu"
 msgid "Data"
-msgstr ""
+msgstr "Dados"
 
 msgctxt "menu"
 msgid "Selection"
-msgstr ""
+msgstr "Seleção"
 
 msgctxt "menu"
 msgid "Presets"
-msgstr ""
+msgstr "Modelos de Etiquetas"
 
 msgid "More..."
 msgstr "Mais..."
@@ -6602,7 +6616,7 @@ msgid "unknown"
 msgstr "desconhecido"
 
 msgid "Enter the coordinates for the new node."
-msgstr ""
+msgstr "Introduza as coordenadas para o novo nó."
 
 msgid ""
 "You can separate longitude and latitude with space, comma or semicolon."
@@ -6643,7 +6657,7 @@ msgid ""
 msgstr ""
 
 msgid "Some examples:"
-msgstr ""
+msgstr "Alguns exemplos:"
 
 msgid "Projected coordinates:"
 msgstr "Coordenadas projetadas:"
@@ -6691,10 +6705,10 @@ msgid "Adjust opacity of the layer."
 msgstr "Ajustar a opacidade da camada."
 
 msgid "Gamma"
-msgstr ""
+msgstr "Gama"
 
 msgid "Adjust gamma value of the layer."
-msgstr ""
+msgstr "Ajustar luminosidade da camada"
 
 msgid "Activate"
 msgstr "Ativar"
@@ -7033,10 +7047,12 @@ msgid "Validation results"
 msgstr "Resultados da validação"
 
 msgid "Lookup"
-msgstr ""
+msgstr "Procurar"
 
 msgid "Looks up the selected primitives in the error list."
 msgstr ""
+"Localiza na lista de resultados da validação o objeto selecionado, caso "
+"esteja nela"
 
 msgid "Fix"
 msgstr "Corrigir"
@@ -8653,9 +8669,6 @@ msgstr "Relação {0}"
 msgid "Object"
 msgstr "Objeto"
 
-msgid "not present"
-msgstr "não está presente"
-
 msgid "Changeset comment"
 msgstr "Comentário do conjunto de dados"
 
@@ -9701,6 +9714,9 @@ msgstr "Escala do pixel: {0}"
 msgid "Best zoom: {0}"
 msgstr "Melhor aproximação: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Tamanho estimado da cache: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Estatísticas da cache: {0}"
 
@@ -9802,6 +9818,13 @@ msgstr "Marcador anterior"
 msgid "Jump to previous marker"
 msgstr "Saltar para o marcador anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "São suportadas todas as projeções"
 
@@ -11979,13 +12002,13 @@ msgid "2. Enter name for this layer"
 msgstr "2. Introduzir o nome desta camada"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "Tamanho total da cache {0}: {1} bytes"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Nome da cache"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Número de objetos"
 
 msgid "imagery fade"
 msgstr "desvanecimento da imagem de fundo"
@@ -12012,9 +12035,6 @@ msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 "Tamanho máximo da cache no disco (por cada serviço de imagens aéreas) em MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Número máximo de objetos na cache da memória: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -13203,35 +13223,53 @@ msgstr "Alterar Etiquetas"
 msgid "Add or remove toolbar button"
 msgstr "Adicionar ou remover o botão da barra de ferramentas"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisito desconhecido: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipo desconhecido: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Expressão de membro inválida: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grupo de modelos {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Mais informação sobre esta funcionalidade"
+msgid "Preset group {0}"
+msgstr "Grupo de modelos {0}"
 
-msgid "Available roles"
-msgstr "Funções disponíveis"
+msgid "Reference {0} is being used before it was defined"
+msgstr "A referência {0} já está a ser usada antes de ser definida"
 
-msgid "role"
-msgstr "função"
+msgid "Roles cannot appear more than once"
+msgstr "As funções não podem aparecer mais do que uma vez"
 
-msgid "count"
-msgstr "nº objetos"
+msgid "Preset role element without parent"
+msgstr "Elemento de função predefinido sem pai"
 
-msgid "elements"
-msgstr "elementos"
+msgid "Preset sub element without parent"
+msgstr "Elemento secundário predefinido sem pai"
 
-msgid "Optional Attributes:"
-msgstr "Atributos Opcionais:"
+msgid "Error parsing {0}: "
+msgstr "Erro ao processar {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Selecionar auto-incremento de {0} para este campo"
+msgid "Search preset"
+msgstr "Procurar modelo de etiquetas"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Cancelar auto-incremento para este campo"
+msgid "Show preset search dialog"
+msgstr "Mostra a janela de procura de modelos de etiquetas"
+
+msgid "Search presets"
+msgstr "Procurar modelo de etiquetas"
+
+msgid "Presets"
+msgstr "Modelos de Etiquetas"
+
+msgid "Search for objects by preset"
+msgstr "Procurar objetos pela etiqueta"
+
+msgid "Show only applicable to selection"
+msgstr "Mostrar apenas etiquetas aplicáveis aos objetos selecionados"
+
+msgid "Search in tags"
+msgstr "Procurar nas etiquetas em inglês"
+
+msgid "Add toolbar button"
+msgstr "Adicionar botão na barra de ferramentas"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13271,53 +13309,35 @@ msgstr ""
 "Modelo de etiquetas com erros \"{0}-{1}\" - o número de itens em "
 "''short_descriptions'' tem de ser igual ao número de ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipo desconhecido: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grupo de modelos {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Grupo de modelos {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "A referência {0} já está a ser usada antes de ser definida"
-
-msgid "Roles cannot appear more than once"
-msgstr "As funções não podem aparecer mais do que uma vez"
-
-msgid "Preset role element without parent"
-msgstr "Elemento de função predefinido sem pai"
-
-msgid "Preset sub element without parent"
-msgstr "Elemento secundário predefinido sem pai"
+msgid "More information about this feature"
+msgstr "Mais informação sobre esta funcionalidade"
 
-msgid "Error parsing {0}: "
-msgstr "Erro ao processar {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributos Opcionais:"
 
-msgid "Search preset"
-msgstr "Procurar modelo de etiquetas"
+msgid "Unknown requisite: {0}"
+msgstr "Requisito desconhecido: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Mostra a janela de procura de modelos de etiquetas"
+msgid "Illegal member expression: {0}"
+msgstr "Expressão de membro inválida: {0}"
 
-msgid "Search presets"
-msgstr "Procurar modelo de etiquetas"
+msgid "Available roles"
+msgstr "Funções disponíveis"
 
-msgid "Presets"
-msgstr "Modelos de Etiquetas"
+msgid "role"
+msgstr "função"
 
-msgid "Search for objects by preset"
-msgstr "Procurar objetos pela etiqueta"
+msgid "count"
+msgstr "nº objetos"
 
-msgid "Show only applicable to selection"
-msgstr "Mostrar apenas etiquetas aplicáveis aos objetos selecionados"
+msgid "elements"
+msgstr "elementos"
 
-msgid "Search in tags"
-msgstr "Procurar nas etiquetas em inglês"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Selecionar auto-incremento de {0} para este campo"
 
-msgid "Add toolbar button"
-msgstr "Adicionar botão na barra de ferramentas"
+msgid "Cancel auto-increment for this field"
+msgstr "Cancelar auto-incremento para este campo"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13726,12 +13746,6 @@ msgstr "Notificador de mensagens"
 msgid "{0} not available (offline mode)"
 msgstr "{0} não disponível (modo desligado)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Nenhum objeto com o identificador {0} no conjunto de dados local. Não é "
-"possível determinar o tipo de objeto."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "A obter um pacote de nós de ''{0}''"
 
@@ -16201,6 +16215,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16224,7 +16241,7 @@ msgid "Hamburg (DK5)"
 msgstr "Hamburgo (DK5)"
 
 msgid "Bavaria (80 cm)"
-msgstr ""
+msgstr "Bavaria (80 cm)"
 
 msgid "Bavaria (2 m)"
 msgstr "Baviera (2 m)"
@@ -16365,7 +16382,7 @@ msgid "Luxembourg Inspire Roads"
 msgstr "Luxemburgo Inspire - Estradas"
 
 msgid "Luxembourg Inspire Water"
-msgstr ""
+msgstr "Luxembourg Inspire Water"
 
 msgid "Niger Delta Oct 2012 Landsat"
 msgstr "Delta do Níger Outubro 2012 Landsat"
@@ -16499,6 +16516,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (imagem aérea)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (caminhos)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (imagens aéreas)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16623,10 +16643,10 @@ msgid "Fiez Orthophoto 2013"
 msgstr "Fiez Ortofoto 2013"
 
 msgid "Taiwan e-Map Open Data"
-msgstr ""
+msgstr "Taiwan e-Map Open Data"
 
 msgid "Taiwan e-Map Open Data (with Contour Line)"
-msgstr ""
+msgstr "Taiwan e-Map Open Data (com linha de contorno)"
 
 msgid "Taiwan Village Boundaries"
 msgstr ""
@@ -16685,12 +16705,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-polegadas Escócia 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-polegada 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k histórico (OSM-Best)"
 
@@ -16949,6 +16975,16 @@ msgstr ""
 "Torna paralelos dois segmentos selecionados rodando um deles num eixo."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16991,14 +17027,12 @@ msgstr ""
 "Fornece uma linha de comandos e permite a criação de comandos. Ver o link "
 "para comandos padrão (arc, cicle, etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Aviso: Experimental!) Ferramenta para unir dados."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Criar uma grelha de linhas."
 
@@ -17424,6 +17458,11 @@ msgstr ""
 "os vários parâmetros."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17776,65 +17815,9 @@ msgstr "Empresa/organismo que faz a gestão"
 msgid "Service Times"
 msgstr "Horário de Missas"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "nascer, pôr do sol"
-
-msgid "Su 09:30,11:00"
-msgstr "Domingo 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sábado, Domingo, Feriados 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sábado 18:00; Domingo 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Sexta 08:00-18:00; 10-15 Abril encerrado; Junho 07:00-20:00; Agosto "
-"encerrado; 24 Dezembro 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sábado 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "semana 1-53/2 Sexta 09:00-12:00; semana 2-52/2 Quarta 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horário de Abertura"
 
-msgid "24/7"
-msgstr "sempre aberto (24h por dia)"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sábado-Domingo 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-"Segunda-Sexta 08:30-20:00; Sábado,Domingo 08:00-15:00; Feriados encerrado"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-"Segunda a Sexta 08:30-20:00, Terça a Domingo 08:00-15:00; Sábado 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Segunda-Domingo 08:00-18:00; 10-15 Abril encerrado; Junho 08:00-14:00; "
-"Agosto encerrado; 25 Dezembro encerrado"
-
-msgid "sunrise-sunset"
-msgstr "do nascer ao pôr do sol"
-
-msgid "Su 10:00+"
-msgstr "Domingo 10:00+ (fecha a partir das)"
-
 msgid "Wheelchairs"
 msgstr "Cadeiras de rodas"
 
@@ -18477,7 +18460,7 @@ msgid "Unclassified"
 msgstr "Estrada sem classificação oficial"
 
 msgid "Street has no name"
-msgstr ""
+msgstr "Estrada sem nome oficial / local"
 
 msgid "Passing Places"
 msgstr "1 só faixa (mas com lugares de passagem)"
@@ -19109,10 +19092,10 @@ msgid "Traffic Mirror"
 msgstr "Espelho Sinalizador de Trânsito"
 
 msgid "Highway milestone"
-msgstr ""
+msgstr "Marco quilométrico"
 
 msgid "Distance (kilometers)"
-msgstr ""
+msgstr "Distância (quilómetros)"
 
 msgctxt "junction=yes"
 msgid "Named Junction"
@@ -19742,7 +19725,7 @@ msgid "Railway Switch"
 msgstr "Agulha de Ferrovia"
 
 msgid "Railway milestone"
-msgstr ""
+msgstr "Marco quilométrico ferroviário"
 
 msgid "Aerialway"
 msgstr "Aéreo por Cabo"
@@ -20344,6 +20327,33 @@ msgstr "Pousada / Hostel / Albergue"
 msgid "Alpine Hut"
 msgstr "Albergue de Montanha"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Direitos de acesso"
+
+msgid "Shower"
+msgstr "Chuveiros Públicos"
+
+msgid "seasonal"
+msgstr "sasonal"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr "obrigatório"
+
+msgid "recommended"
+msgstr "recomendado"
+
+msgid "members_only"
+msgstr "apenas membros"
+
+msgid "Closer Description"
+msgstr "Descrição curta"
+
 msgid "Caravan Site/RV Park"
 msgstr "Parque para Caravanas"
 
@@ -20455,12 +20465,6 @@ msgstr "Beer Garden (não existem em Portugal)"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Discoteca"
-
-msgid "Strip Club"
-msgstr "Clube de Striptease"
-
 msgid "Tourism"
 msgstr "Turismo"
 
@@ -20514,9 +20518,6 @@ msgstr "cidade"
 msgid "region"
 msgstr "região"
 
-msgid "Closer Description"
-msgstr "Descrição curta"
-
 msgid "Routes shown for:"
 msgstr "Mostra Rotas para:"
 
@@ -20638,12 +20639,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Corridas de Cavalos"
 
-msgid "Casino"
-msgstr "Casino"
-
-msgid "Brothel"
-msgstr "Bordel"
-
 msgid "Playground"
 msgstr "Parque Infantil"
 
@@ -20675,6 +20670,18 @@ msgstr "Pesca"
 msgid "Private Swimming Pool"
 msgstr "Piscina Privada"
 
+msgid "Night Club"
+msgstr "Discoteca"
+
+msgid "Casino"
+msgstr "Casino"
+
+msgid "Strip Club"
+msgstr "Clube de Striptease"
+
+msgid "Brothel"
+msgstr "Bordel"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -20983,11 +20990,17 @@ msgstr "Veterinário"
 msgid "Toilets/Restrooms"
 msgstr "Casas de Banho"
 
-msgid "Access rights"
-msgstr "Direitos de acesso"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Feminino"
 
-msgid "seasonal"
-msgstr "sasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Masculino"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Unisexo"
 
 msgid "flush"
 msgstr "descarga de água (o mais comum)"
@@ -21016,24 +21029,12 @@ msgstr "agachado"
 msgid "urinal"
 msgstr "urinol"
 
-msgid "Shower"
-msgstr "Chuveiros Públicos"
-
 msgid "Post Box"
 msgstr "Marco / caixa de correio"
 
 msgid "Collection times"
 msgstr "Horário de recolha"
 
-msgid "Mo-Sa 09:00"
-msgstr "Segunda a Sexta 9:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Segunda a Sexta 17:30; Sábado 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Segunda a Sexta 15:00,19:00; Sábado15:10; Domingo 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -21044,7 +21045,7 @@ msgstr ""
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "na parede"
 
 msgctxt "post_box"
 msgid "meter"
@@ -21146,7 +21147,7 @@ msgid "Shows humidity"
 msgstr "Mostra a humidade"
 
 msgid "Recycling Container"
-msgstr ""
+msgstr "Contentor de Reciclagem"
 
 msgid "Batteries"
 msgstr "Baterias (pilhão)"
@@ -21167,7 +21168,7 @@ msgid "Glass Bottles"
 msgstr "Garrafas de Vidro"
 
 msgid "Green Waste"
-msgstr ""
+msgstr "Resíduos Verdes"
 
 msgid "Paper"
 msgstr "Papel (papelão)"
@@ -21327,6 +21328,24 @@ msgstr "sucção"
 msgid "Count"
 msgstr "Nº de bocas"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Coluna de publicidade"
 
@@ -22016,9 +22035,6 @@ msgstr "Farol"
 msgid "Street Lamp"
 msgstr "Poste de Iluminação"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Segunda a Sexta 22:00 às 05:00"
-
 msgid "Monitoring Station"
 msgstr "Estação de Monitorização (tempo/nível da água/ar/sísmica...)"
 
@@ -23155,11 +23171,8 @@ msgstr "Jornais / Revistas"
 msgid "Ticket"
 msgstr "Bilheteira"
 
-msgid "Department Store"
-msgstr "Grande Armazém"
-
-msgid "Mall"
-msgstr "Centro Comercial"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Drogaria"
@@ -23185,12 +23198,15 @@ msgstr "Produtos Médicos (ortopédicos, etc...)"
 msgid "Jewellery"
 msgstr "Joalharia"
 
-msgid "Gift/Souvenir"
-msgstr "Lembranças"
-
 msgid "Erotic"
 msgstr "Sex Shop"
 
+msgid "Department Store"
+msgstr "Grande Armazém"
+
+msgid "Mall"
+msgstr "Centro Comercial"
+
 msgid "Florist"
 msgstr "Florista"
 
@@ -23215,6 +23231,9 @@ msgstr "Instrumentos Musicais"
 msgid "Toys"
 msgstr "Brinquedos"
 
+msgid "Gift/Souvenir"
+msgstr "Lembranças"
+
 msgid "Variety Store"
 msgstr "Loja de Descontos (Lojas 1,99; preço único)"
 
@@ -23230,6 +23249,9 @@ msgstr "Carteiras / Malas"
 msgid "Pet"
 msgstr "Loja de animais/artigos para animais"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Agência Funerária"
 
@@ -24541,16 +24563,16 @@ msgid "incomplete usage of {0} on a way without {1}"
 msgstr "uso incompleto de {0} numa via sem {1}"
 
 msgid "Same value of {0} and {1}"
-msgstr ""
+msgstr "O mesmo valor de {0} e {1}"
 
 msgid "Same value of {0}, {1} and {2}"
-msgstr ""
+msgstr "O mesmo valor de {0}, {1} e {2}"
 
 msgid "{0} and {1} together with {2} and conflicting values"
 msgstr ""
 
 msgid "Suspicious tag combination: {0} and {1}"
-msgstr ""
+msgstr "Combinação de etiquetas suspeita: {0} e {1}"
 
 msgid "{0}={1} is deprecated"
 msgstr "{0}={1} está em desuso"
@@ -25204,9 +25226,6 @@ msgstr "Procurar e corrigir endereços sem ruas (válidas)."
 msgid "Address Edit"
 msgstr "Editar Endereço"
 
-msgid "Searching"
-msgstr "A procurar"
-
 msgid "Guess values for "
 msgstr "Adivinhar valores para "
 
@@ -25510,9 +25529,6 @@ msgstr "Erro OSMI anterior"
 msgid "Next OSMI bug"
 msgstr "Erro OSMI seguinte"
 
-msgid "Osm Inspector Bugs"
-msgstr "Osm Inspector Bugs"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector Bugs"
 
@@ -26301,13 +26317,6 @@ msgid "Auto sourcing"
 msgstr "Anexar fonte (source) automaticamente"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26995,6 +27004,82 @@ msgstr "Seleção vazia"
 msgid "Invalid reference or subject"
 msgstr "Referência ou sujeito a fusão inválidos"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Endereço"
 
@@ -28461,7 +28546,7 @@ msgid "Copy key tag"
 msgstr ""
 
 msgid "Edit on website"
-msgstr ""
+msgstr "Editar no site"
 
 msgid "Export all images"
 msgstr "Exportar todas as imagens"
@@ -28523,12 +28608,18 @@ msgstr "Meses"
 msgid "Days"
 msgstr "Dias"
 
+msgid "Imported images"
+msgstr "Imagens importadas"
+
 msgid "Mapillary filter"
 msgstr "Filtro Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Abrir janela de filtro Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Imagens descarregadas"
 
@@ -28544,6 +28635,9 @@ msgstr "Histórico Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Abrir janela do histórico Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Imagem Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Abrir janela Mapillary"
 
@@ -28608,10 +28702,10 @@ msgid "Download mode: "
 msgstr "Método de descarregamento: "
 
 msgid "Upload selected sequence"
-msgstr ""
+msgstr "Enviar sequência selecionada"
 
 msgid "Delete after upload"
-msgstr ""
+msgstr "Eliminar após o envio"
 
 msgid "Wait for full quality pictures"
 msgstr ""
@@ -28659,7 +28753,7 @@ msgid "Downloading"
 msgstr "A descarregar"
 
 msgid "Select mode"
-msgstr ""
+msgstr "Modo de seleção"
 
 msgid ""
 "<html><head><title>Mapillary login</title></head><body>Login successful, "
@@ -28667,10 +28761,10 @@ msgid ""
 msgstr ""
 
 msgid "Downloading Mapillary images"
-msgstr ""
+msgstr "A descarregar imagens Mapillary"
 
 msgid "Total Mapillary images: {0}"
-msgstr ""
+msgstr "Total de imagens Mapillary: {0}"
 
 msgid "No images found"
 msgstr "Nenhuma imagem encontrada"
@@ -31176,6 +31270,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Dividir"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr "Ignorar"
+
+msgid "Skip Error"
+msgstr "Ignorar Erro"
+
+msgid "Fixed"
+msgstr "Corrigido"
+
+msgid "Fixed Error"
+msgstr "Erro Corrigido"
+
+msgid "Not an error"
+msgstr "Não é um erro"
+
+msgid "Set download area (m²)"
+msgstr "Dfinir área a descarregar (m²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr "Servidor de manutenção"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Não é possível colocar um nó fora do mundo."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Navegar"
 
diff --git a/i18n/po/pt_BR.po b/i18n/po/pt_BR.po
index 500fb14..5ba1e9a 100644
--- a/i18n/po/pt_BR.po
+++ b/i18n/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-10-08 11:57+0000\n"
 "Last-Translator: Nelson A. de Oliveira <naoliv at debian.org>\n"
 "Language-Team: Português Brasileiro <gnome-pt_br-list at gnome.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:06+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:03+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: pt_BR\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1484,6 +1484,15 @@ msgstr[1] ""
 "Há mais de um caminho usando os nós que foram selecionados. Favor selecionar "
 "o caminho também."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "Você precisa selecionar dois ou mais nós para dividir um caminho circular."
@@ -2266,18 +2275,11 @@ msgstr ""
 "Clique para mover o nó selecionado. Pressione Ctrl para adicionar novos nós, "
 "ou Alt para remover."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Não é possível colocar um nó fora do mundo."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Adicionar um novo nó a via"
 msgstr[1] "Adicionar um novo nó a {0} vias"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-"Não é possível remover um nó que é referenciado por múltiplos objetos"
-
 msgid "Cannot delete node that has tags"
 msgstr "Não é possível remover um nó que possui etiquetas"
 
@@ -2721,6 +2723,12 @@ msgstr "todos os filhos de objetos que combinam com a expressão"
 msgid "all parents of objects matching the expression"
 msgstr "todos os pais de objetos que combinam com a expressão"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n membro da relação e/ou n nó da via"
 
@@ -2744,6 +2752,14 @@ msgstr ""
 "objetos (e todos os nós dos caminhos / membros da relação) na área "
 "descarregada"
 
+msgid "Searching"
+msgstr "Procurando"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Não há valores coincidentes para ''{0}''"
 
@@ -4739,9 +4755,6 @@ msgstr "Não mostrar novamente (esta seção)"
 msgid "Do not show again (remembers choice)"
 msgstr "Não mostrar novamente (lembrar escolha)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "incompleto"
 
@@ -8569,9 +8582,6 @@ msgstr "Relação {0}"
 msgid "Object"
 msgstr "Objeto"
 
-msgid "not present"
-msgstr "não presente"
-
 msgid "Changeset comment"
 msgstr "Comentário do Changeset"
 
@@ -9613,6 +9623,9 @@ msgstr "Escala de pixels: {0}"
 msgid "Best zoom: {0}"
 msgstr "Melhor zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "Estatísticas do cache: {0}"
 
@@ -9714,6 +9727,13 @@ msgstr "Marca prévia"
 msgid "Jump to previous marker"
 msgstr "Ir para a marca anterior"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Todas as projecções são suportadas"
 
@@ -11887,9 +11907,6 @@ msgstr "Diretória de cahce de quadros: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Tamanho máximo do cache de disco (por imagem) em MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Quantidade máxima de objetos no cache da memória: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -13049,35 +13066,53 @@ msgstr "Mudar tags"
 msgid "Add or remove toolbar button"
 msgstr "Adicionar ou remover botões da barra de ferramentas"
 
-msgid "Unknown requisite: {0}"
-msgstr "Requisito desconhecido: {0}"
+msgid "Unknown type: {0}"
+msgstr "Tipo desconhecido: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Membro ilegal na expressão: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Grupo de predefinições {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Mais informações sobre esta característica"
+msgid "Preset group {0}"
+msgstr "Grupo de predefinições {0}"
 
-msgid "Available roles"
-msgstr "Funções disponíveis"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Referência {0} está sendo usada antes de ser definida"
 
-msgid "role"
-msgstr "função"
+msgid "Roles cannot appear more than once"
+msgstr "Funções não podem aparecer mais de uma vez"
 
-msgid "count"
-msgstr "contagem"
+msgid "Preset role element without parent"
+msgstr "Elemento da função predefinição, sem pai"
 
-msgid "elements"
-msgstr "elementos"
+msgid "Preset sub element without parent"
+msgstr "Elemento sub da predefinição, sem pai"
 
-msgid "Optional Attributes:"
-msgstr "Atributos opcionais:"
+msgid "Error parsing {0}: "
+msgstr "Erro analisando {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Selecionar auto-incremento de {0} para este campo"
+msgid "Search preset"
+msgstr "Buscar predefinição"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Cancelar auto-incremento para este campo"
+msgid "Show preset search dialog"
+msgstr "Mostrar tela de busca de pré-definições"
+
+msgid "Search presets"
+msgstr "Buscar predefinição"
+
+msgid "Presets"
+msgstr "Predefinições"
+
+msgid "Search for objects by preset"
+msgstr "Procurar por predefinições"
+
+msgid "Show only applicable to selection"
+msgstr "Exibir somente aplicável para seleção"
+
+msgid "Search in tags"
+msgstr "Procurar nas etiquetas"
+
+msgid "Add toolbar button"
+msgstr "Adicionar botão na barra de ferramentas"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13117,53 +13152,35 @@ msgstr ""
 "Quebrada codificação da predefinição \"{0}-{1}\" - número de itens em "
 "''short_descriptions'' deve ser o mesmo que em ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Tipo desconhecido: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Grupo de predefinições {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Grupo de predefinições {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Referência {0} está sendo usada antes de ser definida"
-
-msgid "Roles cannot appear more than once"
-msgstr "Funções não podem aparecer mais de uma vez"
-
-msgid "Preset role element without parent"
-msgstr "Elemento da função predefinição, sem pai"
-
-msgid "Preset sub element without parent"
-msgstr "Elemento sub da predefinição, sem pai"
+msgid "More information about this feature"
+msgstr "Mais informações sobre esta característica"
 
-msgid "Error parsing {0}: "
-msgstr "Erro analisando {0}: "
+msgid "Optional Attributes:"
+msgstr "Atributos opcionais:"
 
-msgid "Search preset"
-msgstr "Buscar predefinição"
+msgid "Unknown requisite: {0}"
+msgstr "Requisito desconhecido: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Mostrar tela de busca de pré-definições"
+msgid "Illegal member expression: {0}"
+msgstr "Membro ilegal na expressão: {0}"
 
-msgid "Search presets"
-msgstr "Buscar predefinição"
+msgid "Available roles"
+msgstr "Funções disponíveis"
 
-msgid "Presets"
-msgstr "Predefinições"
+msgid "role"
+msgstr "função"
 
-msgid "Search for objects by preset"
-msgstr "Procurar por predefinições"
+msgid "count"
+msgstr "contagem"
 
-msgid "Show only applicable to selection"
-msgstr "Exibir somente aplicável para seleção"
+msgid "elements"
+msgstr "elementos"
 
-msgid "Search in tags"
-msgstr "Procurar nas etiquetas"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Selecionar auto-incremento de {0} para este campo"
 
-msgid "Add toolbar button"
-msgstr "Adicionar botão na barra de ferramentas"
+msgid "Cancel auto-increment for this field"
+msgstr "Cancelar auto-incremento para este campo"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13568,12 +13585,6 @@ msgstr "Notificador de mensagens"
 msgid "{0} not available (offline mode)"
 msgstr "{0} não disponível (modo offline)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Sem primitivo com ID {0} no conjunto de dados local. Não se pode inferir "
-"tipo primitivo."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Obtendo um pacote de nós de ''{0}''"
 
@@ -16022,6 +16033,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16319,6 +16333,9 @@ msgstr "Częstochowa: Ortofotomapa 2011 (imagem aérea)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (paths)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "fator de escala"
 
@@ -16505,12 +16522,18 @@ msgstr "Surrey Air Survey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historic (OSM-Best)"
 
@@ -16770,6 +16793,16 @@ msgstr ""
 "deles em torno de um eixo escolhido."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16818,14 +16851,12 @@ msgstr ""
 "Implementa uma linha de comando e permite criar seus comandos. Veja o link "
 "para os comandos padrão (arco, círculo, etc.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Aviso: Experimental!) Ferramenta para misturar (fundir) dados."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Cria uma grade de caminhos."
 
@@ -17201,6 +17232,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Torna casas com terraço em de blocos individuais."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17534,61 +17570,9 @@ msgstr "Operador"
 msgid "Service Times"
 msgstr "Horário de serviço"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "pôr do sol,nascer do sol"
-
-msgid "Su 09:30,11:00"
-msgstr "Dom 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sab, Dom, Feriado 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sáb 18:00; Dom 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fev 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Ago off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Sáb 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "semana 1-53/2 Sex 09:00-12:00; semana 2-52/2 Quarta 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Horário de Funcionamento"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sáb-Dom 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Seg-Sex 08:30-20:00; Sáb,Dom 08:00-15:00; não em feriados"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Seg-Sex 08:30-20:00, Ter-Dom 08:00-15:00; Sáb 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Seg-Dom 08:00-18:00; Abr 10-15 off; Jun 08:00-14:00; Ago off; Dez 25 off"
-
-msgid "sunrise-sunset"
-msgstr "amanhecer-anoitecer"
-
-msgid "Su 10:00+"
-msgstr "Dom 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Cadeirante"
 
@@ -20102,6 +20086,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Cabana alpina"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Direitos de acesso"
+
+msgid "Shower"
+msgstr "Chuveiro"
+
+msgid "seasonal"
+msgstr "sazonal"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Descrição mais próxima"
+
 msgid "Caravan Site/RV Park"
 msgstr "Área de camping/RV Park"
 
@@ -20213,12 +20224,6 @@ msgstr "Cervejaria ao ar livre"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Casa noturna"
-
-msgid "Strip Club"
-msgstr "Strip Club"
-
 msgid "Tourism"
 msgstr "Turismo"
 
@@ -20271,9 +20276,6 @@ msgstr "cidade"
 msgid "region"
 msgstr "região"
 
-msgid "Closer Description"
-msgstr "Descrição mais próxima"
-
 msgid "Routes shown for:"
 msgstr "Rotas mostrados para:"
 
@@ -20397,12 +20399,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Passeios a cavalo"
 
-msgid "Casino"
-msgstr "Cassino"
-
-msgid "Brothel"
-msgstr "Bordel"
-
 msgid "Playground"
 msgstr "Parquinho"
 
@@ -20434,6 +20430,18 @@ msgstr "Pescaria"
 msgid "Private Swimming Pool"
 msgstr "Piscina Particular"
 
+msgid "Night Club"
+msgstr "Casa noturna"
+
+msgid "Casino"
+msgstr "Cassino"
+
+msgid "Strip Club"
+msgstr "Strip Club"
+
+msgid "Brothel"
+msgstr "Bordel"
+
 msgid "Culture"
 msgstr "Cultura"
 
@@ -20741,11 +20749,17 @@ msgstr "Veterinária"
 msgid "Toilets/Restrooms"
 msgstr "Banheiros"
 
-msgid "Access rights"
-msgstr "Direitos de acesso"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "sazonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "nivelada"
@@ -20774,24 +20788,12 @@ msgstr "agachamento"
 msgid "urinal"
 msgstr "mictório"
 
-msgid "Shower"
-msgstr "Chuveiro"
-
 msgid "Post Box"
 msgstr "Caixa de Correio"
 
 msgid "Collection times"
 msgstr "Tempos de coleta"
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -21085,6 +21087,24 @@ msgstr "sucção"
 msgid "Count"
 msgstr "Contaer"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Coluna de publicidade"
 
@@ -21772,9 +21792,6 @@ msgstr "Farol"
 msgid "Street Lamp"
 msgstr "Poste de Iluminação"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Seg-Sex 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Estação de Monitoramento"
 
@@ -22912,11 +22929,8 @@ msgstr "Banca de jornais"
 msgid "Ticket"
 msgstr "Ingresso"
 
-msgid "Department Store"
-msgstr "Loja de departamentos"
-
-msgid "Mall"
-msgstr "Galeria Comercial/Shopping"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Químico"
@@ -22942,12 +22956,15 @@ msgstr "Suprimentos médicos"
 msgid "Jewellery"
 msgstr "Joalheiro"
 
-msgid "Gift/Souvenir"
-msgstr "Presente/Lembrança"
-
 msgid "Erotic"
 msgstr "Sex Shop"
 
+msgid "Department Store"
+msgstr "Loja de departamentos"
+
+msgid "Mall"
+msgstr "Galeria Comercial/Shopping"
+
 msgid "Florist"
 msgstr "Florista/Loja de flores"
 
@@ -22972,6 +22989,9 @@ msgstr "Instrumento musical"
 msgid "Toys"
 msgstr "Brinquedos"
 
+msgid "Gift/Souvenir"
+msgstr "Presente/Lembrança"
+
 msgid "Variety Store"
 msgstr "Loja de variedades"
 
@@ -22987,6 +23007,9 @@ msgstr "Bolsas"
 msgid "Pet"
 msgstr "Animal de estimação"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Diretores Funerários"
 
@@ -24967,9 +24990,6 @@ msgstr "Encontra e corrige endereços sem ruas (válidas)."
 msgid "Address Edit"
 msgstr "Editar endereço"
 
-msgid "Searching"
-msgstr "Procurando"
-
 msgid "Guess values for "
 msgstr "Valores estimados para "
 
@@ -25273,9 +25293,6 @@ msgstr "Prev OSMI bug"
 msgid "Next OSMI bug"
 msgstr "Próximo OSMI bug"
 
-msgid "Osm Inspector Bugs"
-msgstr "Inspetor de bugs Osm"
-
 msgid "OSM Inspector Bugs"
 msgstr "Inspetor de bugs OSM"
 
@@ -26050,17 +26067,6 @@ msgid "Auto sourcing"
 msgstr "Auto-abastecimento"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"O plugin cadastre-fr usada a tecla de atalho F11 para agarrar,\n"
-"que agora está alocada para o alternar para a tela cheia.\n"
-"O novo atalho para agarrar é F10, mas você pode altera-lo\n"
-"nas configurações de atalho se você quiser."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26745,6 +26751,82 @@ msgstr "Seleção vazia"
 msgid "Invalid reference or subject"
 msgstr "Referência inválida ou sujeito"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Endereço"
 
@@ -28265,12 +28347,18 @@ msgstr "Meses"
 msgid "Days"
 msgstr "Dias"
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Imagens baixadas"
 
@@ -28286,6 +28374,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30889,6 +30980,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terraço"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Não é possível colocar um nó fora do mundo."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Procurar"
 
diff --git a/i18n/po/rm.po b/i18n/po/rm.po
index b4d961f..88366cc 100644
--- a/i18n/po/rm.po
+++ b/i18n/po/rm.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-06-21 19:14+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Raeto-Romance <rm at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n !=1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:57+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:55+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ro.po b/i18n/po/ro.po
index 8e542f8..04cb158 100644
--- a/i18n/po/ro.po
+++ b/i18n/po/ro.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: JOSM\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-02-24 11:34+0000\n"
 "Last-Translator: Ciprian <c1pr1an_43v3r at yahoo.com>\n"
 "Language-Team: Romanian <gnomero-list at lists.sourceforge.net>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
 "== 0) && (n != 0))) ? 2: 1));\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:58+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:55+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "X-Poedit-Country: ROMANIA\n"
 "Language: ro\n"
 "X-Poedit-Language: Romanian\n"
@@ -1417,6 +1417,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2135,17 +2144,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2557,6 +2560,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2578,6 +2587,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4417,9 +4434,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr "incomplet"
 
@@ -7911,9 +7925,6 @@ msgstr ""
 msgid "Object"
 msgstr "Obiect"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8810,6 +8821,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8909,6 +8923,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10845,9 +10866,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11917,34 +11935,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
+msgstr "Eroare la prelucrarea {0}: "
+
+msgid "Search preset"
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11975,52 +12011,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Eroare la prelucrarea {0}: "
-
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12367,10 +12385,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14517,6 +14531,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14809,6 +14826,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14995,12 +15015,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15255,6 +15281,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15288,12 +15324,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15600,6 +15634,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15915,59 +15954,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18454,6 +18443,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18565,12 +18581,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18622,9 +18632,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18746,12 +18753,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18783,6 +18784,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19090,10 +19103,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19123,24 +19142,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19434,6 +19441,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20121,9 +20146,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21259,10 +21281,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21289,10 +21308,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21319,6 +21341,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21334,6 +21359,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23250,9 +23278,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23546,9 +23571,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24203,13 +24225,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24835,6 +24850,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26268,12 +26359,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26289,6 +26386,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28748,6 +28848,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ru.po b/i18n/po/ru.po
index 7f78b26..ef8d5f0 100644
--- a/i18n/po/ru.po
+++ b/i18n/po/ru.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-08 06:38+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-28 06:14+0000\n"
 "Last-Translator: Nkolay Parukhin <parukhin at gmail.com>\n"
 "Language-Team: Koptev Oleg <koptev.oleg at gmail.com>\n"
 "MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:58+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:55+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ru_RU\n"
 
 msgid "Note"
@@ -820,7 +820,7 @@ msgid "Download Rectified Images From Various Services"
 msgstr "Скачать выпрямленные изображения с различных служб"
 
 msgid "Imagery: {0}"
-msgstr ""
+msgstr "Подложка: {0}"
 
 msgid "Custom WMS Link"
 msgstr "Пользовательская ссылка WMS"
@@ -1509,6 +1509,15 @@ msgstr[2] ""
 "Есть несколько линий, использующих точки, которые вы выделили. Пожалуйста, "
 "выделите также линию."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Какой сегмент линии должен унаследовать историю {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Сегмент {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Чтобы разделить замкнутую линию, выделите не менее двух точек."
 
@@ -2298,18 +2307,12 @@ msgstr ""
 "Щёлкните, чтобы переместить выделенную точку. Удерживайте нажатой Ctrl для "
 "добавления новых точек или Alt для удаления."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Не удается поместить точку за пределами мира"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Добавить новую точку к линии"
 msgstr[1] "Добавить новую точку к {0} линиям"
 msgstr[2] "Добавить новую точку к {0} линиям"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Невозможно удалить точку, входящую в несколько объектов"
-
 msgid "Cannot delete node that has tags"
 msgstr "Нельзя удалить точку, имеющую теги"
 
@@ -2582,13 +2585,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Включить в поиск незаконченные и удалённые объекты"
 
 msgid "standard"
-msgstr ""
+msgstr "обычный"
 
 msgid "regular expression"
 msgstr "регулярное выражение"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS-селектор"
 
 msgid "add toolbar button"
 msgstr "добавить кнопку на панель инструментов"
@@ -2765,6 +2768,12 @@ msgstr "все дочерние объекты соответствующих в
 msgid "all parents of objects matching the expression"
 msgstr "все родительские объекты соответствующих выражению объектов"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "отношение, содержащее участника с ролью <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "объекты, являющиеся частью отношения с ролью <i>stop</i>"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ый участник отношения и/или n-ая точка линии"
 
@@ -2788,6 +2797,15 @@ msgstr "объекты в скачанной области"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "объекты (и все их точки/участники отношения) в скачанной области"
 
+msgid "Searching"
+msgstr "Поиск"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Поиск в {0} объекте"
+msgstr[1] "Поиск в {0} объектах"
+msgstr[2] "Поиск в {0} объектах"
+
 msgid "No match found for ''{0}''"
 msgstr "Не найдено совпадений для ''{0}''"
 
@@ -2872,7 +2890,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Неожиданный маркер. Ожидалось {0}, найдено {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Не удалось разобрать MapCSS-селектор"
 
 msgid "Unexpected token: {0}"
 msgstr "Неожиданная лексема: {0}"
@@ -3580,7 +3598,7 @@ msgid "Matrix set identifier"
 msgstr "Идентификатор набора матриц"
 
 msgid "No layers defined by getCapabilities document: {0}"
-msgstr ""
+msgstr "Слои не заданы документом getCapabilities: {0}"
 
 msgid "No layer selected"
 msgstr "Слой не выбран"
@@ -4790,9 +4808,6 @@ msgstr "Не показывать снова (в этом сеансе)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показывать снова (запомнить выбор)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "неполный"
 
@@ -4915,7 +4930,7 @@ msgstr "Смещение снимка"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "Подложка"
 
 msgctxt "layer"
 msgid "Offset"
@@ -8641,9 +8656,6 @@ msgstr "Отношение {0}"
 msgid "Object"
 msgstr "Объект"
 
-msgid "not present"
-msgstr "не существует"
-
 msgid "Changeset comment"
 msgstr "Комментарий к пакету правок"
 
@@ -9731,6 +9743,9 @@ msgstr "Масштаб пиксела: {0}"
 msgid "Best zoom: {0}"
 msgstr "Наилучший масштаб: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Расчётный размер кэша: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Статистика кэша: {0}"
 
@@ -9836,6 +9851,17 @@ msgstr "Предыдущий маркер"
 msgid "Jump to previous marker"
 msgstr "К предыдущему маркеру"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Для добавления ещё одного слоя необходимо выделить JOSM не менее "
+"{0,number,#}МБ памяти с помощью параметра -Xmx{0,number,#}M (см. "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Сейчас JOSM выделено {1,number,#}МБ"
+
 msgid "All projections are supported"
 msgstr "Все проекции поддерживаются"
 
@@ -12001,9 +12027,6 @@ msgstr "Каталог кэша квадратов: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Максимальный размер дискового кэша (для снимка) в МБ: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Максимальное число объектов в кэше памяти: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -13142,6 +13165,8 @@ msgstr ""
 msgid ""
 "The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 msgstr ""
+"Невозможно применить заготовку <i>{0}</i>, так как выделены неподходящие "
+"объекты!"
 
 msgid "Change {0} object"
 msgid_plural "Change {0} objects"
@@ -13161,35 +13186,53 @@ msgstr "Изменить теги"
 msgid "Add or remove toolbar button"
 msgstr "Добавить или удалить кнопку панели инструментов"
 
-msgid "Unknown requisite: {0}"
-msgstr "Неизвестный запрос: {0}"
+msgid "Unknown type: {0}"
+msgstr "Неизвестный тип: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Недопустимое выражение в {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Группа заготовок {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Подробнее"
+msgid "Preset group {0}"
+msgstr "Группа заготовок {0}"
 
-msgid "Available roles"
-msgstr "Доступные роли"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Отношение {0} было использовано прежде чем было описано"
 
-msgid "role"
-msgstr "роль"
+msgid "Roles cannot appear more than once"
+msgstr "Роли не могут появляться более одного раза"
 
-msgid "count"
-msgstr "количество"
+msgid "Preset role element without parent"
+msgstr "Заготовка элемента роли без родителей"
 
-msgid "elements"
-msgstr "элементы"
+msgid "Preset sub element without parent"
+msgstr "Заготовка вложенного элемента без родителей"
 
-msgid "Optional Attributes:"
-msgstr "Дополнительные атрибуты:"
+msgid "Error parsing {0}: "
+msgstr "Ошибка при разборе {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Выберите автоприращение {0} для этого поля"
+msgid "Search preset"
+msgstr "Найти заготовку..."
 
-msgid "Cancel auto-increment for this field"
-msgstr "Отменить автоприращение для этого поля"
+msgid "Show preset search dialog"
+msgstr "Показать диалог поиска заготовок"
+
+msgid "Search presets"
+msgstr "Поиск заготовок"
+
+msgid "Presets"
+msgstr "Заготовки"
+
+msgid "Search for objects by preset"
+msgstr "Поиск объектов по заготовке"
+
+msgid "Show only applicable to selection"
+msgstr "Показывать только подходящие к выделенным"
+
+msgid "Search in tags"
+msgstr "Поиск в тегах"
+
+msgid "Add toolbar button"
+msgstr "Добавить кнопку на панель инструментов"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13229,53 +13272,35 @@ msgstr ""
 "Испорченная заготовка тегов \"{0}-{1}\" - количество элементов в "
 "''short_descriptions'' должно быть таким же, как и в ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Неизвестный тип: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Группа заготовок {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Группа заготовок {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Отношение {0} было использовано прежде чем было описано"
-
-msgid "Roles cannot appear more than once"
-msgstr "Роли не могут появляться более одного раза"
-
-msgid "Preset role element without parent"
-msgstr "Заготовка элемента роли без родителей"
-
-msgid "Preset sub element without parent"
-msgstr "Заготовка вложенного элемента без родителей"
+msgid "More information about this feature"
+msgstr "Подробнее"
 
-msgid "Error parsing {0}: "
-msgstr "Ошибка при разборе {0}: "
+msgid "Optional Attributes:"
+msgstr "Дополнительные атрибуты:"
 
-msgid "Search preset"
-msgstr "Найти заготовку..."
+msgid "Unknown requisite: {0}"
+msgstr "Неизвестный запрос: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Показать диалог поиска заготовок"
+msgid "Illegal member expression: {0}"
+msgstr "Недопустимое выражение в {0}"
 
-msgid "Search presets"
-msgstr "Поиск заготовок"
+msgid "Available roles"
+msgstr "Доступные роли"
 
-msgid "Presets"
-msgstr "Заготовки"
+msgid "role"
+msgstr "роль"
 
-msgid "Search for objects by preset"
-msgstr "Поиск объектов по заготовке"
+msgid "count"
+msgstr "количество"
 
-msgid "Show only applicable to selection"
-msgstr "Показывать только подходящие к выделенным"
+msgid "elements"
+msgstr "элементы"
 
-msgid "Search in tags"
-msgstr "Поиск в тегах"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Выберите автоприращение {0} для этого поля"
 
-msgid "Add toolbar button"
-msgstr "Добавить кнопку на панель инструментов"
+msgid "Cancel auto-increment for this field"
+msgstr "Отменить автоприращение для этого поля"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13565,7 +13590,7 @@ msgid "GeoJSON Files"
 msgstr "Файлы GeoJSON"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Файлы Projected GeoJSON"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Слой «{0}» не поддерживается"
@@ -13676,12 +13701,6 @@ msgstr "Message notifier"
 msgid "{0} not available (offline mode)"
 msgstr "{0} недоступен (автономный режим)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Нет элементов с  id {0} в местной базе данных. Невозможно вывести тип "
-"элемента."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Выборка пакета точек из ''{0}''"
 
@@ -16170,6 +16189,9 @@ msgstr "Тулуза - ортофотоплан 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Тур - ортофото 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Тур - ортофото 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16463,6 +16485,9 @@ msgstr "Забже: ортофото 2011"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: трассы"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Вроцлав: ортофото 2015 (аэрофотосъёмка)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16587,16 +16612,16 @@ msgid "Fiez Orthophoto 2013"
 msgstr "Фиез - ортофото 2013"
 
 msgid "Taiwan e-Map Open Data"
-msgstr ""
+msgstr "Тайвань - e-Map Open Data"
 
 msgid "Taiwan e-Map Open Data (with Contour Line)"
-msgstr ""
+msgstr "Тайвань - e-Map Open Data (с изолиниями)"
 
 msgid "Taiwan Village Boundaries"
-msgstr ""
+msgstr "Тайвань - границы деревень"
 
 msgid "Taiwan Land-Section Data"
-msgstr ""
+msgstr "Тайвань - данные о земельных участках"
 
 msgid "NLSC Open Data WMTS"
 msgstr "NLSC Open Data WMTS"
@@ -16649,12 +16674,18 @@ msgstr "Суррей, аэросъёмка"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-дюймовая карта Шотландии 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25000 1-й выпуск 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-дюймовая 7-й выпуск 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25000 историческая (OSM-Best)"
 
@@ -16913,6 +16944,21 @@ msgstr ""
 "из них вокруг выбранного центра."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+"Предоставляет библиотечные компоненты Apache Commons. Предназначен не для "
+"непосредственной установки пользователем, а только как зависимость для "
+"других модулей."
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+"Предоставляет библиотеку Apache HTTP. Предназначен не для непосредственной "
+"установки пользователем, а только как зависимость для других модулей."
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16957,18 +17003,13 @@ msgstr ""
 "Реализует командную строку с возможностью создания своих команд. Стандартные "
 "команды можно скачать по ссылке."
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Предоставляет библиотеку Commons Imaging. Предназначен не для "
-"непосредственной установки пользователями, а как зависимость для других "
-"модулей."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Внимание: экспериментальный!) Инструмент для объединения (слияния) данных."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Создаёт сетку из линий."
 
@@ -17354,6 +17395,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Сделать ряд домов вдоль улицы из одного блока."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Интегрирует to-fix (http://osmlab.github.io/to-fix/) в JOSM для исправления "
+"ошибок в OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17688,61 +17736,9 @@ msgstr "Оператор"
 msgid "Service Times"
 msgstr "Часы служб"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "закат,восход"
-
-msgid "Su 09:30,11:00"
-msgstr "Вс 09:30, 11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa,Su,PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Сб 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Часы работы"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Пн-Пт 08:30-20:00, Вт-Вс 08:00-15:00; Сб 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-
-msgid "sunrise-sunset"
-msgstr "с восхода до заката"
-
-msgid "Su 10:00+"
-msgstr "Su 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Инвалидные коляски"
 
@@ -20261,6 +20257,33 @@ msgstr "Хостел  (гостиница)"
 msgid "Alpine Hut"
 msgstr "Альпинистский домик"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Права доступа"
+
+msgid "Shower"
+msgstr "Душ"
+
+msgid "seasonal"
+msgstr "в зависимости от сезона"
+
+msgid "Reservation"
+msgstr "Резервирование"
+
+msgid "required"
+msgstr "обязательно"
+
+msgid "recommended"
+msgstr "рекомендуется"
+
+msgid "members_only"
+msgstr "только для членов организации"
+
+msgid "Closer Description"
+msgstr "Подробное описание"
+
 msgid "Caravan Site/RV Park"
 msgstr "Кемпинг для домов на колёсах"
 
@@ -20372,12 +20395,6 @@ msgstr "Пивной сад"
 msgid "Bar"
 msgstr "Бар"
 
-msgid "Night Club"
-msgstr "Ночной клуб"
-
-msgid "Strip Club"
-msgstr "Стрип-клуб"
-
 msgid "Tourism"
 msgstr "Туризм"
 
@@ -20429,9 +20446,6 @@ msgstr "город"
 msgid "region"
 msgstr "регион"
 
-msgid "Closer Description"
-msgstr "Подробное описание"
-
 msgid "Routes shown for:"
 msgstr "Показаны маршруты:"
 
@@ -20553,12 +20567,6 @@ msgstr "Сауна"
 msgid "Horse Riding"
 msgstr "Верховая езда"
 
-msgid "Casino"
-msgstr "Казино"
-
-msgid "Brothel"
-msgstr "Бордель"
-
 msgid "Playground"
 msgstr "Игровая площадка"
 
@@ -20590,6 +20598,18 @@ msgstr "Место для рыбалки"
 msgid "Private Swimming Pool"
 msgstr "Частный плавательный бассейн"
 
+msgid "Night Club"
+msgstr "Ночной клуб"
+
+msgid "Casino"
+msgstr "Казино"
+
+msgid "Strip Club"
+msgstr "Стрип-клуб"
+
+msgid "Brothel"
+msgstr "Бордель"
+
 msgid "Culture"
 msgstr "Культура"
 
@@ -20897,11 +20917,17 @@ msgstr "Ветеринария"
 msgid "Toilets/Restrooms"
 msgstr "Общественный туалет"
 
-msgid "Access rights"
-msgstr "Права доступа"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Женский"
 
-msgid "seasonal"
-msgstr "в зависимости от сезона"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Мужской"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Оба пола"
 
 msgid "flush"
 msgstr "смывной"
@@ -20930,39 +20956,27 @@ msgstr "напольный унитаз"
 msgid "urinal"
 msgstr "писуар"
 
-msgid "Shower"
-msgstr "Душ"
-
 msgid "Post Box"
 msgstr "Почтовый ящик"
 
 msgid "Collection times"
 msgstr "Время выемки писем"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "тумба"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "на столбе"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "настенный"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "для промаркированных отправлений"
 
 msgid "Drive through"
 msgstr "Доступен не выходя из автомобиля"
@@ -21241,6 +21255,24 @@ msgstr "всасывание"
 msgid "Count"
 msgstr "Количество"
 
+msgid "Compressed Air"
+msgstr "Компрессор для шин"
+
+msgid "Valves"
+msgstr "Типы клапана"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Клапан Шрадера"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Рекламная тумба"
 
@@ -21928,9 +21960,6 @@ msgstr "Маяк"
 msgid "Street Lamp"
 msgstr "Уличный фонарь"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Станция наблюдения"
 
@@ -23068,11 +23097,8 @@ msgstr "Газетный киоск"
 msgid "Ticket"
 msgstr "Билетная касса"
 
-msgid "Department Store"
-msgstr "Универмаг"
-
-msgid "Mall"
-msgstr "Крупный торговый центр"
+msgid "For the body"
+msgstr "Для тела"
 
 msgid "Chemist"
 msgstr "Бытовая химия"
@@ -23098,12 +23124,15 @@ msgstr "Медицинские принадлежности"
 msgid "Jewellery"
 msgstr "Ювелирный магазин"
 
-msgid "Gift/Souvenir"
-msgstr "Подарки и сувениры"
-
 msgid "Erotic"
 msgstr "Секс-шоп"
 
+msgid "Department Store"
+msgstr "Универмаг"
+
+msgid "Mall"
+msgstr "Крупный торговый центр"
+
 msgid "Florist"
 msgstr "Цветочный магазин"
 
@@ -23128,6 +23157,9 @@ msgstr "Музыкальные инструменты"
 msgid "Toys"
 msgstr "Игрушки"
 
+msgid "Gift/Souvenir"
+msgstr "Подарки и сувениры"
+
 msgid "Variety Store"
 msgstr "Универсальный магазин"
 
@@ -23143,6 +23175,9 @@ msgstr "Сумки и чемоданы"
 msgid "Pet"
 msgstr "Зоомагазин"
 
+msgid "Photo"
+msgstr "Фотография"
+
 msgid "Funeral Directors"
 msgstr "Ритуальные услуги"
 
@@ -25128,9 +25163,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr "Редактировать адрес"
 
-msgid "Searching"
-msgstr "Поиск"
-
 msgid "Guess values for "
 msgstr "Угадать значение "
 
@@ -25432,9 +25464,6 @@ msgstr "Пред. ошибка OSMI"
 msgid "Next OSMI bug"
 msgstr "След. ошибка OSMI"
 
-msgid "Osm Inspector Bugs"
-msgstr "Ошибки из Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Ошибки OSM инспектора"
 
@@ -26220,17 +26249,6 @@ msgid "Auto sourcing"
 msgstr "Авто источники"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Модуль cadastre-fr использовал для захвата клавишу F11,\n"
-"которая сейчас предназначена для переключения в полноэкранный режим.\n"
-"Новая клавиша захвата — F10, но при желании её можно изменить\n"
-"в настройках Горячих клавиш."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26910,6 +26928,82 @@ msgstr "Ничего не выделено"
 msgid "Invalid reference or subject"
 msgstr "Неверный объект справочного или целевого слоя"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Адрес"
 
@@ -28321,13 +28415,13 @@ msgid "Import pictures into Mapillary layer in a sequence"
 msgstr "Импортировать изображения в последовательность в слое Mapillary"
 
 msgid "Join mode"
-msgstr ""
+msgstr "Режим объединения"
 
 msgid "Join/unjoin pictures"
 msgstr "Соединить/разъединить снимки"
 
 msgid "Join Mapillary pictures"
-msgstr ""
+msgstr "Объединить снимки Mapillary"
 
 msgid "Upload pictures"
 msgstr "Отправить снимки"
@@ -28354,7 +28448,7 @@ msgid "Uploaded {0} images"
 msgstr "Отправлено {0} снимков"
 
 msgid "Approve upload on the website"
-msgstr ""
+msgstr "Подтвердить загрузку на веб-сайт"
 
 msgid "View in website"
 msgstr "Посмотреть на веб-сайте"
@@ -28366,7 +28460,7 @@ msgid "Copy key tag"
 msgstr "Копировать тег"
 
 msgid "Edit on website"
-msgstr ""
+msgstr "Изменить на сайте"
 
 msgid "Export all images"
 msgstr "Экспортировать все снимки"
@@ -28428,12 +28522,18 @@ msgstr "месяцев"
 msgid "Days"
 msgstr "дней"
 
+msgid "Imported images"
+msgstr "Импортированные изображения"
+
 msgid "Mapillary filter"
 msgstr "Фильтр Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Открыть диалог фильтра Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Скачанные снимки"
 
@@ -28449,6 +28549,9 @@ msgstr "История Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Открыть диалог истории Mapillary"
 
+msgid "Mapillary picture"
+msgstr "Снимок Mapillary"
+
 msgid "Open Mapillary window"
 msgstr "Открыть окно Mapillary"
 
@@ -31044,6 +31147,64 @@ msgstr ""
 msgid "Terrace"
 msgstr "Ряд домов вдоль улицы"
 
+msgid "To-fix"
+msgstr "To-fix"
+
+msgid "Open to-fix window."
+msgstr "Открыть окно to-fix."
+
+msgid "Tool:To-fix"
+msgstr "Инструмент:To-fix"
+
+msgid "Skip"
+msgstr "Пропустить"
+
+msgid "Skip Error"
+msgstr "Пропустить ошибку"
+
+msgid "Fixed"
+msgstr "Исправлено"
+
+msgid "Fixed Error"
+msgstr "Ошибка исправлена"
+
+msgid "Not an error"
+msgstr "Не ошибка"
+
+msgid "Set download area (m²)"
+msgstr "Задайте область скачивания (м²)"
+
+msgid "~.02"
+msgstr "~.02"
+
+msgid "tofix:Skip item"
+msgstr "tofix:Пропустить элемент"
+
+msgid "tofix:Fixed item"
+msgstr "tofix:Исправленный элемент"
+
+msgid "tofix:Not a Error item"
+msgstr "tofix:Не ошибочный элемент"
+
+msgid "Maintenance server"
+msgstr "Сервер на обслуживании"
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+"<html>Что-то пошло не так, обновите модуль или сообщите об ошибке на <a "
+"href=\"\">josm-tofix-plugin/issues</a></html>"
+
+msgid "Something went wrong, try again"
+msgstr "Что-то пошло не так, попробуйте ещё раз"
+
+msgid "Cannot place a node outside of the world."
+msgstr "Не удается поместить точку за пределами мира"
+
+msgid "Layer to draw OSM error"
+msgstr "Слой для отображения ошибок OSM"
+
 msgid "Browse"
 msgstr "Просмотр"
 
diff --git a/i18n/po/sk.po b/i18n/po/sk.po
index 0af56af..af67823 100644
--- a/i18n/po/sk.po
+++ b/i18n/po/sk.po
@@ -9,16 +9,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-07 19:18+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-18 12:57+0000\n"
 "Last-Translator: aceman444 <Unknown>\n"
 "Language-Team: Slovak <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:00+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:57+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: sk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1483,6 +1483,15 @@ msgstr[1] ""
 msgstr[2] ""
 "Vybrané body používa viac ako jedna cesta. Prosím vyberte tiež cestu."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr "Ktorý úsek cesty má použiť históriu z {0}?"
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "Úsek {0}: {1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Musíte zvoliť minimálne dva body pre rozdelenie uzavretej cesty."
 
@@ -2271,18 +2280,12 @@ msgstr ""
 "Kliknite na premiestnenie zvýrazneného bodu. Držte Ctrl na pridanie nových "
 "bodov, alebo Alt na vymazanie."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Nedá sa umiestniť bod mimo sveta."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Pridať nový bod do {0} ciest"
 msgstr[1] "Pridať nový bod do {0} cesty"
 msgstr[2] "Pridať nový bod do {0} ciest"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Nedá sa zmazať bod, ktorý je odkazovaný z viacerých objektov"
-
 msgid "Cannot delete node that has tags"
 msgstr "Nedá sa zmazať bod, ktorý obsahuje značky"
 
@@ -2725,6 +2728,12 @@ msgstr "všetky deti objektov zhodujúcich sa s výrazom"
 msgid "all parents of objects matching the expression"
 msgstr "všetci rodičia objektov zhodujúcich sa s výrazom"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr "relácia obsahujúca člena s rolou <i>stop</i>"
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr "objekty, ktoré majú rolu <i>stop</i> v relácii"
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-tý člen relácie a/alebo n-tý bod cesty"
 
@@ -2748,6 +2757,15 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objekty (a všetky ich body ciest / členovia relácií) v stiahnutej oblasti"
 
+msgid "Searching"
+msgstr "Vyhľadávanie"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "Hľadá sa v {0} objektoch"
+msgstr[1] "Hľadá sa v {0} objekte"
+msgstr[2] "Hľadá sa v {0} objektoch"
+
 msgid "No match found for ''{0}''"
 msgstr "Neboli nájdené záznamy pre \"{0}\""
 
@@ -4749,9 +4767,6 @@ msgstr "Nezobrazovať nabudúce (v tomto sedení)"
 msgid "Do not show again (remembers choice)"
 msgstr "Znovu nezobrazovať (zapamätanie voľby)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "neúplný"
 
@@ -8578,9 +8593,6 @@ msgstr "Relácia {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "nie je prítomný"
-
 msgid "Changeset comment"
 msgstr "Komentár k súboru zmien"
 
@@ -9641,6 +9653,9 @@ msgstr "Zväčšenie bodov: {0}"
 msgid "Best zoom: {0}"
 msgstr "Najlepšie priblíženie:  {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Odhadovaná veľkosť vyrovnávacej pamäte: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Štatistiky vyrovnávacej pamäte: {0}"
 
@@ -9746,6 +9761,17 @@ msgstr "Predchádzajúca značka"
 msgid "Jump to previous marker"
 msgstr "Prejsť na predchádzajúcu značku"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Pre pridanie ďalšej vrstvy budete potrebovať vyhradiť aspoň {0,number,#}MB "
+"pamäte pre JOSM pomocou parametra -Xmx{0,number,#}M (pozri "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"V súčasnosti je pre JOSM vyhradených {1,number,#}MB pamäte"
+
 msgid "All projections are supported"
 msgstr "Všetky projekcie sú podporované"
 
@@ -11912,9 +11938,6 @@ msgstr ""
 "Maximálna veľkosť diskovej vyrovnávacej pamäti (pre každý mapový podklad) v "
 "MB: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Maximálny počet objektov v pamäti: "
-
 msgid "Tiles zoom offset:"
 msgstr "Posun priblíženia dlaždíc:"
 
@@ -13083,35 +13106,53 @@ msgstr "Upraviť značky"
 msgid "Add or remove toolbar button"
 msgstr "Pridať alebo odstrániť tlačidlo na panel nástrojov"
 
-msgid "Unknown requisite: {0}"
-msgstr "Neznámy žiadaný: {0}"
+msgid "Unknown type: {0}"
+msgstr "Neznány type (druh): {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Nepovolený členský výraz: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Prednastavená skupina {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Viac informácií o tejto vlastnosti"
+msgid "Preset group {0}"
+msgstr "Prednastavená skupina {0}"
 
-msgid "Available roles"
-msgstr "Dostupné úlohy"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Odkaz {0} je použitý predtým než bol zadefinovaný"
 
-msgid "role"
-msgstr "úlohy"
+msgid "Roles cannot appear more than once"
+msgstr "Role sa nesmú vyskytovať viackrát"
 
-msgid "count"
-msgstr "počet"
+msgid "Preset role element without parent"
+msgstr "Prednastavené úlohy prvkom, bez materských"
 
-msgid "elements"
-msgstr "prvky"
+msgid "Preset sub element without parent"
+msgstr "Prednastavený sub prvok bez materských"
 
-msgid "Optional Attributes:"
-msgstr "Voliteľné atribúty:"
+msgid "Error parsing {0}: "
+msgstr "Chyba rozkladania(parsovania) {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Zvoliť automatické zvyšovanie {0} pre toto pole"
+msgid "Search preset"
+msgstr "Hľadať predvoľby"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Zrušiť automatické zvyšovanie pre toto pole"
+msgid "Show preset search dialog"
+msgstr "Zobraziť vyhľadávací dialóg predvolieb"
+
+msgid "Search presets"
+msgstr "Hľadať predvoľby"
+
+msgid "Presets"
+msgstr "Predvoľby"
+
+msgid "Search for objects by preset"
+msgstr "Hľadať objekty podľa predvoľby"
+
+msgid "Show only applicable to selection"
+msgstr "Zobraziť iba použiteľné pre výber"
+
+msgid "Search in tags"
+msgstr "Hľadať v značkách"
+
+msgid "Add toolbar button"
+msgstr "Pridať tlačidlo na panel nástrojov"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13151,53 +13192,35 @@ msgstr ""
 "Poškodené prednastavenie tagovania \"{0}-{1}\" - počet položiek v "
 "''short_descriptions'' musí byť rovnaký ako vo ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Neznány type (druh): {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Prednastavená skupina {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Prednastavená skupina {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Odkaz {0} je použitý predtým než bol zadefinovaný"
-
-msgid "Roles cannot appear more than once"
-msgstr "Role sa nesmú vyskytovať viackrát"
-
-msgid "Preset role element without parent"
-msgstr "Prednastavené úlohy prvkom, bez materských"
-
-msgid "Preset sub element without parent"
-msgstr "Prednastavený sub prvok bez materských"
+msgid "More information about this feature"
+msgstr "Viac informácií o tejto vlastnosti"
 
-msgid "Error parsing {0}: "
-msgstr "Chyba rozkladania(parsovania) {0}: "
+msgid "Optional Attributes:"
+msgstr "Voliteľné atribúty:"
 
-msgid "Search preset"
-msgstr "Hľadať predvoľby"
+msgid "Unknown requisite: {0}"
+msgstr "Neznámy žiadaný: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Zobraziť vyhľadávací dialóg predvolieb"
+msgid "Illegal member expression: {0}"
+msgstr "Nepovolený členský výraz: {0}"
 
-msgid "Search presets"
-msgstr "Hľadať predvoľby"
+msgid "Available roles"
+msgstr "Dostupné úlohy"
 
-msgid "Presets"
-msgstr "Predvoľby"
+msgid "role"
+msgstr "úlohy"
 
-msgid "Search for objects by preset"
-msgstr "Hľadať objekty podľa predvoľby"
+msgid "count"
+msgstr "počet"
 
-msgid "Show only applicable to selection"
-msgstr "Zobraziť iba použiteľné pre výber"
+msgid "elements"
+msgstr "prvky"
 
-msgid "Search in tags"
-msgstr "Hľadať v značkách"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Zvoliť automatické zvyšovanie {0} pre toto pole"
 
-msgid "Add toolbar button"
-msgstr "Pridať tlačidlo na panel nástrojov"
+msgid "Cancel auto-increment for this field"
+msgstr "Zrušiť automatické zvyšovanie pre toto pole"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13605,12 +13628,6 @@ msgstr "Oznamovanie správ"
 msgid "{0} not available (offline mode)"
 msgstr "{0} nie je dostupné (režim offline)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Žiadnu základný objekt s ID {0} v lokálnom dátovom súbore. Nemožno vyvodiť "
-"typ objektu."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Sťahuje sa balíček bodov z ''{0}''"
 
@@ -16103,6 +16120,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Ortofoto 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr "Tours - Ortofoto 2008-2010"
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16399,6 +16419,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (letecké snímky)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (chodníky)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr "Wrocław: Ortofotomapa 2015 (letecké snímky)"
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16585,12 +16608,18 @@ msgstr "Surrey Letecká prehliadka"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Škótsko 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1:25k 1st Series 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7th Series 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25k historická (OSM-Best)"
 
@@ -16849,6 +16878,16 @@ msgstr ""
 "nich na vybranom bode."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16895,16 +16934,12 @@ msgstr ""
 "Doplní príkazový riadok a aktivuje vkladanie príkazov. Pozri odkaz na "
 "štandardné príkazy (oblúku, kružnica atď.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Poskytuje knižnicu Commons Imaging. Nie je určený na priamu inštaláciu, ale "
-"ako závislosť pre iné pluginy."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Varovanie: Experimentálne!) Nástroj pre spájanie (zlučovanie) dát."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Vytvára sieť ciest."
 
@@ -17278,6 +17313,13 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Vytvára radové domy mimo jednotlivých blokov."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+"Integruje do JOSM to-fix http://osmlab.github.io/to-fix/ pre opravy chýb v "
+"OpenStreetMap"
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17607,64 +17649,9 @@ msgstr "Prevádzkovateľ (Operátor)"
 msgid "Service Times"
 msgstr "Čas služieb"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "západ, východ slnka (sunset,sunrise)"
-
-msgid "Su 09:30,11:00"
-msgstr "Ne 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "So,Ne,Sv 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; Su 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Pi 08:00-18:00; Apr 10-15 zatvorené; Jún 07:00-20:00; Aug zatvorené; Dec 24 "
-"08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "So 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-"nepárny týždeň 1-53/2 Pi 09:00-12:00; párny týždeň 2-52/2 St 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Otváracia doba"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "So-Ne 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Po-Pi 08:30-20:00; So,Ne 08:00-15:00; Sviatky zatvorené"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Po-Pi 08:30-20:00, Ut-Ne 08:00-15:00; So 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Po-Ne 08:00-18:00; Apr 10-15 zatvorené; Jún 08:00-14:00; Aug zatvorené; Dec "
-"25 zatvorené"
-
-msgid "sunrise-sunset"
-msgstr "východ-západ slnka (sunrise-sunset)"
-
-msgid "Su 10:00+"
-msgstr "Ne 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Invalidné vozíky"
 
@@ -20185,6 +20172,33 @@ msgstr "Ubytovňa"
 msgid "Alpine Hut"
 msgstr "Horská chata"
 
+msgid "Wilderness Hut"
+msgstr "Chata v divočine"
+
+msgid "Access rights"
+msgstr "Oprávnenie prístupu"
+
+msgid "Shower"
+msgstr "Sprchy"
+
+msgid "seasonal"
+msgstr "sezónne"
+
+msgid "Reservation"
+msgstr "Rezervácia"
+
+msgid "required"
+msgstr "vyžadovaná"
+
+msgid "recommended"
+msgstr "odporúčaná"
+
+msgid "members_only"
+msgstr "len pre členov"
+
+msgid "Closer Description"
+msgstr "Bližší popis"
+
 msgid "Caravan Site/RV Park"
 msgstr "Kemping pre obytné prívesy"
 
@@ -20296,12 +20310,6 @@ msgstr "Pivná terasa"
 msgid "Bar"
 msgstr "Bar (výčap)"
 
-msgid "Night Club"
-msgstr "Nočný zábavný klub"
-
-msgid "Strip Club"
-msgstr "Striptízový klub"
-
 msgid "Tourism"
 msgstr "Turistika"
 
@@ -20353,9 +20361,6 @@ msgstr "mesto (city)"
 msgid "region"
 msgstr "oblasť (region)"
 
-msgid "Closer Description"
-msgstr "Bližší popis"
-
 msgid "Routes shown for:"
 msgstr "Zobrazené trasy sú pre:"
 
@@ -20477,12 +20482,6 @@ msgstr "Sauna"
 msgid "Horse Riding"
 msgstr "Jazdenie na koni"
 
-msgid "Casino"
-msgstr "Kasíno"
-
-msgid "Brothel"
-msgstr "Nevestinec"
-
 msgid "Playground"
 msgstr "Detské ihrisko"
 
@@ -20514,6 +20513,18 @@ msgstr "Rybolov"
 msgid "Private Swimming Pool"
 msgstr "Súkromný plavecký bazén"
 
+msgid "Night Club"
+msgstr "Nočný zábavný klub"
+
+msgid "Casino"
+msgstr "Kasíno"
+
+msgid "Strip Club"
+msgstr "Striptízový klub"
+
+msgid "Brothel"
+msgstr "Nevestinec"
+
 msgid "Culture"
 msgstr "Kultúra"
 
@@ -20821,11 +20832,17 @@ msgstr "Veterinár"
 msgid "Toilets/Restrooms"
 msgstr "Toalety"
 
-msgid "Access rights"
-msgstr "Oprávnenie prístupu"
+msgctxt "restroom"
+msgid "Female"
+msgstr "Ženy"
 
-msgid "seasonal"
-msgstr "sezónne"
+msgctxt "restroom"
+msgid "Male"
+msgstr "Muži"
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr "Všetky pohlavia"
 
 msgid "flush"
 msgstr "splachovacie"
@@ -20854,39 +20871,27 @@ msgstr "čupenie"
 msgid "urinal"
 msgstr "pisoár"
 
-msgid "Shower"
-msgstr "Sprchy"
-
 msgid "Post Box"
 msgstr "Poštová schránka"
 
 msgid "Collection times"
 msgstr "Čas výberu pošty"
 
-msgid "Mo-Sa 09:00"
-msgstr "Po-So 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Po-Pi 17:30; So 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Po-Pi 15:00,19:00; So 15:10; Ne 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "stĺpová"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "na tyči"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "v stene"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "na listy z výplatného stroja"
 
 msgid "Drive through"
 msgstr "Prejazd"
@@ -21165,6 +21170,24 @@ msgstr "bez tlaku"
 msgid "Count"
 msgstr "Počet"
 
+msgid "Compressed Air"
+msgstr "Stlačený vzduch"
+
+msgid "Valves"
+msgstr "Ventily"
+
+msgid "Dunlop (Woods)"
+msgstr "Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Schrader"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Reklamný stĺp"
 
@@ -21852,9 +21875,6 @@ msgstr "Maják"
 msgid "Street Lamp"
 msgstr "Pouličná lampa"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Po-Pi 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Meracia stanica"
 
@@ -22992,11 +23012,8 @@ msgstr "Novinový stánok"
 msgid "Ticket"
 msgstr "Lístky"
 
-msgid "Department Store"
-msgstr "Obchodný dom"
-
-msgid "Mall"
-msgstr "Nákupné centrum"
+msgid "For the body"
+msgstr "Pre telo"
 
 msgid "Chemist"
 msgstr "Drogéria"
@@ -23022,12 +23039,15 @@ msgstr "Zdravotnícke potreby"
 msgid "Jewellery"
 msgstr "Klenotníctvo/Šperky"
 
-msgid "Gift/Souvenir"
-msgstr "Darčeky/Suveníry"
-
 msgid "Erotic"
 msgstr "Sexshop"
 
+msgid "Department Store"
+msgstr "Obchodný dom"
+
+msgid "Mall"
+msgstr "Nákupné centrum"
+
 msgid "Florist"
 msgstr "Kvetinárstvo"
 
@@ -23052,6 +23072,9 @@ msgstr "Hudobné nástroje"
 msgid "Toys"
 msgstr "Hračky"
 
+msgid "Gift/Souvenir"
+msgstr "Darčeky/Suveníry"
+
 msgid "Variety Store"
 msgstr "Zmiešaný tovar"
 
@@ -23067,6 +23090,9 @@ msgstr "Tašky"
 msgid "Pet"
 msgstr "Domáce zvieratá"
 
+msgid "Photo"
+msgstr "Foto"
+
 msgid "Funeral Directors"
 msgstr "Pohrebná služba"
 
@@ -23134,7 +23160,7 @@ msgid "vouchers"
 msgstr "kupóny (poukážky)"
 
 msgid "Payment Methods"
-msgstr "Zpôsoby platby"
+msgstr "Spôsoby platby"
 
 msgid "Debit cards"
 msgstr "Debetné karty"
@@ -25032,9 +25058,6 @@ msgstr "Nájsť a opraviť adresy bez (platných) ulíc."
 msgid "Address Edit"
 msgstr "Upraviť adresy"
 
-msgid "Searching"
-msgstr "Vyhľadávanie"
-
 msgid "Guess values for "
 msgstr "Hádať hodnoty "
 
@@ -25336,9 +25359,6 @@ msgstr "Predchádzajúca OSMI chyba"
 msgid "Next OSMI bug"
 msgstr "Nasledujúca OSMI chyba"
 
-msgid "Osm Inspector Bugs"
-msgstr "Chyby z Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Chyby z OSM Inspector"
 
@@ -26011,13 +26031,6 @@ msgid "Auto sourcing"
 msgstr "Automatické získavanie"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26687,6 +26700,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adresa"
 
@@ -28158,12 +28247,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr "Filter Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Otvoriť okno filtra Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Stiahnuté obrázky"
 
@@ -28179,6 +28274,9 @@ msgstr "História Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Otvoriť okno histórie Mapillary"
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr "Otvoriť okno Mapillary"
 
@@ -30663,6 +30761,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Rad (Terrace)"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Nedá sa umiestniť bod mimo sveta."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Prechádzať"
 
diff --git a/i18n/po/sl.po b/i18n/po/sl.po
index 38fdb43..08426e0 100644
--- a/i18n/po/sl.po
+++ b/i18n/po/sl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2013-03-30 13:06+0000\n"
 "Last-Translator: Dirk Stöcker <launchpad at dstoecker.de>\n"
 "Language-Team: Slovenian <sl at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
 "n%100==4 ? 3 : 0);\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:00+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:57+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: sl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1373,6 +1373,15 @@ msgstr[1] "Izbrano vozlišče je del več poti. Prosim, izberite tudi pot."
 msgstr[2] "Izbrani vozlišči sta del več poti. Prosim, izberite tudi pot."
 msgstr[3] "Izbrana vozlišča so del več poti. Prosim, izberite tudi pot."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Za razdelitev krožne poti izberite dve ali več vozlišč."
 
@@ -2095,17 +2104,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2517,6 +2520,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2538,6 +2547,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4383,9 +4400,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr "nepopoln"
 
@@ -7889,9 +7903,6 @@ msgstr ""
 msgid "Object"
 msgstr "Predmet"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8796,6 +8807,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8895,6 +8909,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10831,9 +10852,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11904,34 +11922,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr "Prednastavitve"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11962,52 +11998,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Search preset"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Available roles"
 msgstr ""
 
-msgid "Search presets"
+msgid "role"
 msgstr ""
 
-msgid "Presets"
-msgstr "Prednastavitve"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12358,10 +12376,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14514,6 +14528,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14806,6 +14823,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14992,12 +15012,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15252,6 +15278,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15285,12 +15321,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15597,6 +15631,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15912,59 +15951,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18451,6 +18440,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18562,12 +18578,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turizem"
 
@@ -18619,9 +18629,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18743,12 +18750,6 @@ msgstr "Savna"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Igrišče"
 
@@ -18780,6 +18781,18 @@ msgstr "Ribarjenje"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19087,10 +19100,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19120,24 +19139,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Poštni nabiralnik"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19431,6 +19438,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20118,9 +20143,6 @@ msgstr "Svetilnik"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21256,10 +21278,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21286,10 +21305,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21316,6 +21338,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21331,6 +21356,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23247,9 +23275,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23543,9 +23568,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24200,13 +24222,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24832,6 +24847,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26267,12 +26358,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26288,6 +26385,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28747,6 +28847,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/sq.po b/i18n/po/sq.po
index 21e2f18..9c57363 100644
--- a/i18n/po/sq.po
+++ b/i18n/po/sq.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-11-04 19:43+0000\n"
 "Last-Translator: StefanPrifti <Unknown>\n"
 "Language-Team: FLOSS Kosova\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:31+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:31+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/sr.po b/i18n/po/sr.po
index c00caa9..fc86c98 100644
--- a/i18n/po/sr.po
+++ b/i18n/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-02-01 15:30+0000\n"
 "Last-Translator: Slobodan Simić <Unknown>\n"
 "Language-Team: Serbian <sr at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 04:59+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:56+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: sr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1364,6 +1364,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2082,17 +2091,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2504,6 +2507,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2525,6 +2534,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4360,9 +4377,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7852,9 +7866,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8752,6 +8763,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8851,6 +8865,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10781,9 +10802,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11852,34 +11870,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11910,52 +11946,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12302,10 +12320,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14452,6 +14466,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14744,6 +14761,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14930,12 +14950,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15190,6 +15216,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15223,12 +15259,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15535,6 +15569,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15850,59 +15889,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18389,6 +18378,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18500,12 +18516,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18557,9 +18567,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18681,12 +18688,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18718,6 +18719,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19025,10 +19038,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19058,24 +19077,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19369,6 +19376,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20056,9 +20081,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21194,10 +21216,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21224,10 +21243,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21254,6 +21276,9 @@ msgstr ""
 msgid "Toys"
 msgstr "Играчке"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21269,6 +21294,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23185,9 +23213,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23481,9 +23506,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24138,13 +24160,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24770,6 +24785,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26203,12 +26294,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26224,6 +26321,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28683,6 +28783,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/sv.po b/i18n/po/sv.po
index 0ec0fa9..fe3a779 100644
--- a/i18n/po/sv.po
+++ b/i18n/po/sv.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-08-17 21:52+0000\n"
-"Last-Translator: Niklas Henriksson <fringillus92 at gmail.com>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-27 23:51+0000\n"
+"Last-Translator: Tomas Marklund <tomasmarklund75 at gmail.com>\n"
 "Language-Team: Swedish <sv at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:01+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:58+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: sv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -80,16 +80,16 @@ msgid "Help"
 msgstr "Hjälp"
 
 msgid "Initializing OSM API"
-msgstr "Initialiserar OSM-API"
+msgstr "Initierar OSM-API"
 
 msgid "Initializing validator"
-msgstr "Initialiserar validerare"
+msgstr "Initierar validerare"
 
 msgid "Initializing presets"
-msgstr "Initialiserar förinställningar"
+msgstr "Initierar förinställningar"
 
 msgid "Initializing map styles"
-msgstr "Initialiserar kartstilar"
+msgstr "Initierar kartstilar"
 
 msgid "Loading imagery preferences"
 msgstr "Laddar inställningar för ortofoto"
@@ -1304,7 +1304,7 @@ msgid "You must enter a search term"
 msgstr "Du måste ange en sökterm"
 
 msgid "Select All"
-msgstr "Välj allt"
+msgstr "Markera alla"
 
 msgid ""
 "Select all undeleted objects in the data layer. This selects incomplete "
@@ -1460,6 +1460,15 @@ msgstr[1] ""
 "Det finns mer än en sträcka som använder sig av de noder du valt. Välj även "
 "sträckan."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Du måste välja två eller fler noder för att dela en sluten sträcka."
 
@@ -2237,17 +2246,11 @@ msgstr ""
 "Klicka för att flytta den valda noden. Håll Ctrl nedtryckt för att lägga "
 "till nya noder, eller Alt för att ta bort."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Kan inte placera en nod utanför världen."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Lägg till en ny nod till sträcka"
 msgstr[1] "Lägg till en ny nod till {0} sträckor"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Kan inte ta bort nod som används av ytterligare objekt"
-
 msgid "Cannot delete node that has tags"
 msgstr "Kan inte radera nod som har taggar"
 
@@ -2686,6 +2689,12 @@ msgstr "alla underobjekt liknande uttrycket"
 msgid "all parents of objects matching the expression"
 msgstr "alla föräldrar liknande uttrycket"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n:te medlemmen i relation och/eller n:te noden på en väg"
 
@@ -2708,6 +2717,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "objekt (och alla dess vägnoder /relationsmedlemmar) i nedladdat område"
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Inga sökträffar för ''{0}''"
 
@@ -4626,9 +4643,6 @@ msgstr "Visa inte igen (den här sessionen)"
 msgid "Do not show again (remembers choice)"
 msgstr "Visa inte igen (Kom ihåg mitt val)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "ofullständig"
 
@@ -4748,7 +4762,7 @@ msgstr "Bildförskjutning"
 
 msgctxt "menu"
 msgid "Imagery"
-msgstr ""
+msgstr "Bakgrundsbilder"
 
 msgctxt "layer"
 msgid "Offset"
@@ -4970,35 +4984,35 @@ msgstr ""
 
 msgctxt "menu"
 msgid "File"
-msgstr ""
+msgstr "Arkiv"
 
 msgctxt "menu"
 msgid "Edit"
-msgstr ""
+msgstr "Redigera"
 
 msgctxt "menu"
 msgid "View"
-msgstr ""
+msgstr "Visa"
 
 msgctxt "menu"
 msgid "Tools"
-msgstr ""
+msgstr "Verktyg"
 
 msgctxt "menu"
 msgid "More tools"
-msgstr ""
+msgstr "Fler verktyg"
 
 msgctxt "menu"
 msgid "Data"
-msgstr ""
+msgstr "Data"
 
 msgctxt "menu"
 msgid "Selection"
-msgstr ""
+msgstr "Markering"
 
 msgctxt "menu"
 msgid "Presets"
-msgstr ""
+msgstr "Snabbval"
 
 msgid "More..."
 msgstr "Mer..."
@@ -5009,11 +5023,11 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Windows"
-msgstr ""
+msgstr "Fönster"
 
 msgctxt "menu"
 msgid "Help"
-msgstr ""
+msgstr "Help"
 
 msgid "Menu: {0}"
 msgstr "Meny: {0}"
@@ -5041,7 +5055,7 @@ msgstr ""
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "Ljud"
 
 msgid "Do not hide toolbar"
 msgstr "Göm inte verktygsfält"
@@ -8178,9 +8192,6 @@ msgstr "Relation {0}"
 msgid "Object"
 msgstr "Objekt"
 
-msgid "not present"
-msgstr "inte tillgängligt"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8713,7 +8724,7 @@ msgid "Initializing nodes to update ..."
 msgstr ""
 
 msgid "Initializing ways to update ..."
-msgstr "Initialiserar sträckor som skall uppdateras ..."
+msgstr "Initierar sträckor som skall uppdateras ..."
 
 msgid "Initializing relations to update ..."
 msgstr ""
@@ -9124,6 +9135,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr "Bästa zoom: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -9223,6 +9237,13 @@ msgstr "Föregående markör"
 msgid "Jump to previous marker"
 msgstr "Hoppa till föregående markör"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -11219,9 +11240,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12312,34 +12330,52 @@ msgstr "Ändra taggar"
 msgid "Add or remove toolbar button"
 msgstr "Lägg till eller ta bort knapp i verktygsfält"
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
+msgstr "Okänd typ: {0}"
+
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "Mer information om denna funktion"
+msgid "Reference {0} is being used before it was defined"
+msgstr ""
 
-msgid "Available roles"
-msgstr "Tillgängliga roller"
+msgid "Roles cannot appear more than once"
+msgstr ""
 
-msgid "role"
-msgstr "roll"
+msgid "Preset role element without parent"
+msgstr ""
 
-msgid "count"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "elements"
-msgstr "element"
+msgid "Error parsing {0}: "
+msgstr "Fel vid tolkning {0}: "
 
-msgid "Optional Attributes:"
-msgstr "Valfria attribut:"
+msgid "Search preset"
+msgstr "Sök snabbval"
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Search presets"
+msgstr "Sök snabbval"
+
+msgid "Presets"
+msgstr "Snabbval"
+
+msgid "Search for objects by preset"
+msgstr "Sök objekt efter snabbval"
+
+msgid "Show only applicable to selection"
+msgstr "Visa enbart Nyckel/värde applicerbart på markerade objekt"
+
+msgid "Search in tags"
+msgstr "Sök bland taggar"
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12370,52 +12406,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr "Okänd typ: {0}"
+msgid "More information about this feature"
+msgstr "Mer information om denna funktion"
 
-msgid "Preset group {1} / {0}"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Valfria attribut:"
 
-msgid "Preset group {0}"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Reference {0} is being used before it was defined"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Roles cannot appear more than once"
-msgstr ""
+msgid "Available roles"
+msgstr "Tillgängliga roller"
 
-msgid "Preset role element without parent"
-msgstr ""
+msgid "role"
+msgstr "roll"
 
-msgid "Preset sub element without parent"
+msgid "count"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "Fel vid tolkning {0}: "
-
-msgid "Search preset"
-msgstr "Sök snabbval"
+msgid "elements"
+msgstr "element"
 
-msgid "Show preset search dialog"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Search presets"
-msgstr "Sök snabbval"
-
-msgid "Presets"
-msgstr "Snabbval"
-
-msgid "Search for objects by preset"
-msgstr "Sök objekt efter snabbval"
-
-msgid "Show only applicable to selection"
-msgstr "Visa enbart Nyckel/värde applicerbart på markerade objekt"
-
-msgid "Search in tags"
-msgstr "Sök bland taggar"
-
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12771,10 +12789,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Hämtar ett paket med noder från \"{0}\""
 
@@ -15024,6 +15038,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15316,6 +15333,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15502,12 +15522,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15764,6 +15790,16 @@ msgstr ""
 "vald pivåpunkt."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15797,12 +15833,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -16119,6 +16153,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Gör ett enskilt hus till ett radhus."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -16434,59 +16473,9 @@ msgstr "Operatör"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Öppettider"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "Rullstolar"
 
@@ -18985,6 +18974,33 @@ msgstr "Vandrarhem"
 msgid "Alpine Hut"
 msgstr "Alphydda"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "Tillträde"
+
+msgid "Shower"
+msgstr "Dusch"
+
+msgid "seasonal"
+msgstr "säsongsmässig"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Detaljerad beskrivning"
+
 msgid "Caravan Site/RV Park"
 msgstr "Ställplats"
 
@@ -19096,12 +19112,6 @@ msgstr ""
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Nattklubb"
-
-msgid "Strip Club"
-msgstr "Strippklubb"
-
 msgid "Tourism"
 msgstr "Turism"
 
@@ -19153,9 +19163,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr "Detaljerad beskrivning"
-
 msgid "Routes shown for:"
 msgstr "Rutter visas för:"
 
@@ -19279,12 +19286,6 @@ msgstr "Bastu"
 msgid "Horse Riding"
 msgstr "Ridning"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "Bordell"
-
 msgid "Playground"
 msgstr "Lekplats"
 
@@ -19316,6 +19317,18 @@ msgstr "Fiske"
 msgid "Private Swimming Pool"
 msgstr "Privat swimmingpool"
 
+msgid "Night Club"
+msgstr "Nattklubb"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Strippklubb"
+
+msgid "Brothel"
+msgstr "Bordell"
+
 msgid "Culture"
 msgstr "Kultur"
 
@@ -19623,11 +19636,17 @@ msgstr "Veterinär"
 msgid "Toilets/Restrooms"
 msgstr "Toaletter"
 
-msgid "Access rights"
-msgstr "Tillträde"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "säsongsmässig"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "vattenspolning"
@@ -19656,24 +19675,12 @@ msgstr "på huk"
 msgid "urinal"
 msgstr "urinoar"
 
-msgid "Shower"
-msgstr "Dusch"
-
 msgid "Post Box"
 msgstr "Brevlåda"
 
 msgid "Collection times"
 msgstr "Tömningstid"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; Sa 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19967,6 +19974,24 @@ msgstr "sug"
 msgid "Count"
 msgstr "Antal"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Reklampelare"
 
@@ -20654,9 +20679,6 @@ msgstr "Fyrtorn"
 msgid "Street Lamp"
 msgstr "Gatulampa"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mån-Fre 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Övervakningsstation"
 
@@ -20835,7 +20857,7 @@ msgid "humpback"
 msgstr ""
 
 msgid "Movable Bridge"
-msgstr ""
+msgstr "Öppningsbar bro"
 
 msgid "bascule"
 msgstr ""
@@ -20856,7 +20878,7 @@ msgid "transporter"
 msgstr ""
 
 msgid "Bridge Support"
-msgstr ""
+msgstr "Brofundament"
 
 msgid "pier"
 msgstr ""
@@ -20871,7 +20893,7 @@ msgid "pivot_pier"
 msgstr ""
 
 msgid "Bridge outline"
-msgstr ""
+msgstr "Ytterkontur bro"
 
 msgid "Power Plant"
 msgstr ""
@@ -21652,7 +21674,7 @@ msgid "Deli (Fine Food)"
 msgstr ""
 
 msgid "Candy Store"
-msgstr ""
+msgstr "Godisaffär"
 
 msgid "Tea"
 msgstr ""
@@ -21772,7 +21794,7 @@ msgid "Interior Decoration"
 msgstr ""
 
 msgid "Antiques"
-msgstr ""
+msgstr "Antikviteter"
 
 msgid "Printed Material"
 msgstr ""
@@ -21792,11 +21814,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "Varuhus"
-
-msgid "Mall"
-msgstr "Galleria"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Hygien"
@@ -21822,12 +21841,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "Erotikaffär"
 
+msgid "Department Store"
+msgstr "Varuhus"
+
+msgid "Mall"
+msgstr "Galleria"
+
 msgid "Florist"
 msgstr "Florist"
 
@@ -21852,6 +21874,9 @@ msgstr "Musikaffär"
 msgid "Toys"
 msgstr "Leksaker"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21867,6 +21892,9 @@ msgstr "Väskor"
 msgid "Pet"
 msgstr "Husdjur"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -22736,14 +22764,14 @@ msgstr ""
 
 msgctxt "the tag note=*"
 msgid "Note"
-msgstr ""
+msgstr "Notering"
 
 msgctxt "note=*"
 msgid "An important hint for other mappers (not for the end user)."
 msgstr ""
 
 msgid "Fixme"
-msgstr ""
+msgstr "Fixa mig"
 
 msgctxt "fixme=*"
 msgid ""
@@ -23791,9 +23819,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -24087,9 +24112,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24744,13 +24766,6 @@ msgid "Auto sourcing"
 msgstr "Automatkälla"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -25384,6 +25399,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Adress"
 
@@ -26838,12 +26929,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26859,6 +26956,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -29331,6 +29431,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Husrad"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Kan inte placera en nod utanför världen."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ta.po b/i18n/po/ta.po
index 75a0bb3..928ee75 100644
--- a/i18n/po/ta.po
+++ b/i18n/po/ta.po
@@ -7,88 +7,88 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2012-10-03 22:36+0000\n"
-"Last-Translator: நவீன் குமார்(கெம்ளின்) <naveenmtp at gmail.com>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-28 15:55+0000\n"
+"Last-Translator: நவலடி <navaladi at gmail.com>\n"
 "Language-Team: Tamil <ta at li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:02+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:58+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "X-Poedit-Country: INDIA\n"
 "Language: ta\n"
 "X-Poedit-Language: Tamil\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
-msgstr ""
+msgstr "{0}: விருப்பம் ''{1}'' தெளிவற்றது"
 
 msgid "{0}: option ''--{1}'' does not allow an argument"
-msgstr ""
+msgstr "{0}: விருப்பம் '' - {1} '' அனுமதி இல்லை"
 
 msgid "{0}: option ''{1}{2}'' does not allow an argument"
-msgstr ""
+msgstr "{0}: விருப்பம் ''{1}{2}'' அனுமதி இல்லை"
 
 msgid "{0}: option ''{1}'' requires an argument"
-msgstr ""
+msgstr "{0}: விருப்பம் '' {1} '' ஒரு வாதம் தேவைப்படுகிறது"
 
 msgid "{0}: unrecognized option ''--{1}''"
-msgstr ""
+msgstr "{0}: அறியப்படாத தேர்வு '' - {1} ''"
 
 msgid "{0}: unrecognized option ''{1}{2}''"
-msgstr ""
+msgstr "{0}: அறியப்படாத தேர்வு '' {1} {2} ''"
 
 msgid "{0}: illegal option -- {1}"
-msgstr ""
+msgstr "{0}: சட்டவிரோத விருப்பம் -- {1}"
 
 msgid "{0}: invalid option -- {1}"
-msgstr ""
+msgstr "{0}: செல்லுபடியாகாத விருப்பம் -- {1}"
 
 msgid "{0}: option requires an argument -- {1}"
-msgstr ""
+msgstr "{0}: விருப்பம்  ஒரு வாதம் தேவைப்படுகிறது -- {1}"
 
 msgid "Invalid value {0} for parameter ''has_arg''"
-msgstr ""
+msgstr "\"Has_arg'' அளவுரு தவறான மதிப்பு {0}"
 
 msgid "Background Terms of Use"
-msgstr ""
+msgstr "பயன்பாட்டு பின்னணி விதிமுறைகள்"
 
 msgid "Opening link not supported on current platform (''{0}'')"
-msgstr ""
+msgstr "இணைப்பை திறக்க  தற்போதைய இயங்குதளத்தில் ஆதரவு இல்லை (''{0}'')"
 
 msgid "ERROR: {0}"
-msgstr ""
+msgstr "பிழை: {0}"
 
 msgid "WARNING: {0}"
-msgstr ""
+msgstr "எச்சரிக்கை: {0}"
 
 msgid "INFO: {0}"
-msgstr ""
+msgstr "தகவல்: {0}"
 
 msgid "DEBUG: {0}"
-msgstr ""
+msgstr "பிழைத்திருத்தம்: {0}"
 
 msgid "Cause: "
-msgstr ""
+msgstr "காரணம்: "
 
 msgid "Executing platform startup hook"
-msgstr ""
+msgstr "மேடை தொடக்க கொக்கி  செயல்படுகிறது"
 
 msgid "Building main menu"
-msgstr ""
+msgstr "பிரதான பட்டி உருவாக்கபடுகிறது"
 
 msgid "Help"
 msgstr "உதவி"
 
 msgid "Initializing OSM API"
-msgstr ""
+msgstr "OSM API துவக்குகிறது"
 
 msgid "Initializing validator"
-msgstr ""
+msgstr "மதிப்பாய்வாளர் துவக்குகிறது"
 
 msgid "Initializing presets"
-msgstr ""
+msgstr "முன்னமைவுகளை துவக்குகிறது"
 
 msgid "Initializing map styles"
 msgstr ""
@@ -145,7 +145,7 @@ msgid "Java Version {0}"
 msgstr "ஜாவா பதிப்பு {0}"
 
 msgid "Homepage"
-msgstr "தொடக்கப்பக்கம்"
+msgstr "முகப்புபக்கம்"
 
 msgid "Bug Reports"
 msgstr "பிழை அறிவிப்புகள்"
@@ -920,7 +920,9 @@ msgstr "கோப்புகளைத் திறந்துகின்ற
 msgid "Cannot open {0} file with the file importer ''{1}''."
 msgid_plural "Cannot open {0} files with the file importer ''{1}''."
 msgstr[0] ""
+"\"{1}\" கோப்பு இறக்குமதியாளர் மூலமாக \"{0}\" கோப்பை திறக்க முடியவில்லை."
 msgstr[1] ""
+"\"{1}\" கோப்பு இறக்குமதியாளர் மூலமாக \"{0}\" கோப்புகளை திறக்க முடியவில்லை."
 
 msgid ""
 "Cannot open {0} file because file does not exist or no suitable file "
@@ -1392,6 +1394,15 @@ msgstr[1] ""
 "ஒன்றுக்கு மேற்ப்பட்ட வழிகள் நீங்கள் தேர்ந்தெடுத்த புள்ளிகளைப் "
 "பயன்படுத்துகின்றன. வழியையும் தேர்ந்தெடுத்துக"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 "வட்ட வழியைப் பிரிக்க இரண்டுக்கு மேற்பட்ட புள்ளிகளைத் தேர்ந்தெடுக்க வேண்டும்"
@@ -2115,17 +2126,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2537,6 +2542,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2558,6 +2569,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4393,9 +4412,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "முடிவுபெறாத"
 
@@ -7886,9 +7902,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8785,6 +8798,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8884,6 +8900,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10816,9 +10839,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11887,34 +11907,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11945,52 +11983,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12337,10 +12357,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14487,6 +14503,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14779,6 +14798,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14965,12 +14987,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15225,6 +15253,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15258,12 +15296,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15570,6 +15606,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15885,59 +15926,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18424,6 +18415,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18535,12 +18553,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18592,9 +18604,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18716,12 +18725,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18753,6 +18756,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19060,10 +19075,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19093,24 +19114,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19404,6 +19413,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20091,9 +20118,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21229,10 +21253,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21259,10 +21280,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21289,6 +21313,9 @@ msgstr ""
 msgid "Toys"
 msgstr "பொம்மைகள்"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21304,6 +21331,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23220,9 +23250,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23516,9 +23543,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24173,13 +24197,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24805,6 +24822,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26238,12 +26331,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26259,6 +26358,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28724,6 +28826,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/te.po b/i18n/po/te.po
index 264fd61..747709b 100644
--- a/i18n/po/te.po
+++ b/i18n/po/te.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2011-05-13 08:50+0000\n"
 "Last-Translator: Praveen Illa <mail2ipn at gmail.com>\n"
 "Language-Team: Telugu <te at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:02+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:59+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: te\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/th.po b/i18n/po/th.po
index df93000..9e60116 100644
--- a/i18n/po/th.po
+++ b/i18n/po/th.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2009-03-23 02:34+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Thai <th at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:03+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 04:59+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: th\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/tr.po b/i18n/po/tr.po
index 28c5efa..391f3f0 100644
--- a/i18n/po/tr.po
+++ b/i18n/po/tr.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2014-05-16 05:31+0000\n"
 "Last-Translator: katpatuka <email at katpatuka.org>\n"
 "Language-Team: Türkçe <>\n"
@@ -17,8 +17,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:03+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:00+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1399,6 +1399,15 @@ msgstr[0] ""
 "Seçtiğiniz düğümü kullanmak için birden fazla yol var.Lütfen kullanmak "
 "istediğiniz yolu da seçiniz."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Dairesel bir yolu bölmek için iki veya fazla kavşak seçiniz."
 
@@ -2127,17 +2136,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2553,6 +2556,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2574,6 +2583,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "''{0}'' için herhangi karşılık bulunamadı"
 
@@ -4426,9 +4443,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "eksik"
 
@@ -7917,9 +7931,6 @@ msgstr ""
 msgid "Object"
 msgstr "Obje"
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8816,6 +8827,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8915,6 +8929,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10870,9 +10891,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11942,34 +11960,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
-msgstr "Seçilebilen Özellikler:"
+msgid "Error parsing {0}: "
+msgstr "İşleme Hatası {0}: "
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
+msgstr "Ön tanımlarında ara"
+
+msgid "Show preset search dialog"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Search presets"
+msgstr "Ön tanımlarında ara"
+
+msgid "Presets"
+msgstr "Ayarlanmış"
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -12000,52 +12036,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
+msgid "Optional Attributes:"
+msgstr "Seçilebilen Özellikler:"
 
-msgid "Roles cannot appear more than once"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Preset role element without parent"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Preset sub element without parent"
+msgid "Available roles"
 msgstr ""
 
-msgid "Error parsing {0}: "
-msgstr "İşleme Hatası {0}: "
-
-msgid "Search preset"
-msgstr "Ön tanımlarında ara"
-
-msgid "Show preset search dialog"
+msgid "role"
 msgstr ""
 
-msgid "Search presets"
-msgstr "Ön tanımlarında ara"
-
-msgid "Presets"
-msgstr "Ayarlanmış"
-
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12396,10 +12414,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14555,6 +14569,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14847,6 +14864,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15033,12 +15053,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15293,6 +15319,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15326,12 +15362,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15638,6 +15672,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15953,59 +15992,9 @@ msgstr "Operator"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "Açılış saati"
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18492,6 +18481,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Dağcı Barakası"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18603,12 +18619,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr "Turizm"
 
@@ -18660,9 +18670,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18784,12 +18791,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr "Oyun Sahası"
 
@@ -18821,6 +18822,18 @@ msgstr "Balıkçılık"
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19128,10 +19141,16 @@ msgstr "Veteriner"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19161,24 +19180,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "Posta Kutusu"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19472,6 +19479,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20159,9 +20184,6 @@ msgstr "DenizFeneri"
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21297,10 +21319,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21327,10 +21346,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21357,6 +21379,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21372,6 +21397,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23288,9 +23316,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23584,9 +23609,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24241,13 +24263,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24873,6 +24888,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26318,12 +26409,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26339,6 +26436,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28800,6 +28900,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/ug.po b/i18n/po/ug.po
index 36b1853..fd972fb 100644
--- a/i18n/po/ug.po
+++ b/i18n/po/ug.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2012-07-14 16:22+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Uyghur <ug at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:04+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:00+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/uk.po b/i18n/po/uk.po
index 106b0d8..361604e 100644
--- a/i18n/po/uk.po
+++ b/i18n/po/uk.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-10-06 21:01+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-14 16:09+0000\n"
 "Last-Translator: andygol <Unknown>\n"
 "Language-Team: Ukrainian <uk at li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:04+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:01+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: uk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1504,6 +1504,15 @@ msgstr[2] ""
 "Є кілька ліній, що використовують точки, які ви виділили. Будь ласка, "
 "виділіть також лінію."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Щоб розділити замкнену лінію, виділіть не менше двох точок."
 
@@ -2295,18 +2304,12 @@ msgstr ""
 "Клацніть для переміщення підсвіченої точки. Тримайте Ctrl для додавання "
 "нових точок або Alt для вилучення."
 
-msgid "Cannot place a node outside of the world."
-msgstr "Неможливо помістити точку за межі світу."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Додати нову точку до лінії"
 msgstr[1] "Додати нову точку до {0} ліній"
 msgstr[2] "Додати нову точку до {0} ліній"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Неможливо вилучити точку, пов’язану з кількома об’єктами"
-
 msgid "Cannot delete node that has tags"
 msgstr "Неможливо вилучити точку, що має теґи"
 
@@ -2579,13 +2582,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Також включати в результати пошуку вилучені та неповні об’єкти."
 
 msgid "standard"
-msgstr ""
+msgstr "стандартний"
 
 msgid "regular expression"
 msgstr "регулярний вираз"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS-селектор"
 
 msgid "add toolbar button"
 msgstr "додати на панель інструментів"
@@ -2760,6 +2763,12 @@ msgstr "усі нащадки об’єктів, що задовольняють
 msgid "all parents of objects matching the expression"
 msgstr "усі пращури об’єктів, що задовольняють умовам"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-ий член зв’язку та/або n-а точка лінії"
 
@@ -2782,6 +2791,14 @@ msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 "об’єкти (та всі їхні лінії, точки/члени зв’язків) у завантаженій ділянці"
 
+msgid "Searching"
+msgstr "Пошук"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Не знайдено збігів для ''{0}''"
 
@@ -2811,7 +2828,7 @@ msgstr "пошук за виразом"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -2866,7 +2883,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "Непередбачений елемент. Очікувалось {0}, знайдено {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "Збій аналізу MapCSS-селектора"
 
 msgid "Unexpected token: {0}"
 msgstr "Непередбачена конструкція: {0}"
@@ -3568,7 +3585,7 @@ msgid "Projection"
 msgstr "Проекція"
 
 msgid "Matrix set identifier"
-msgstr ""
+msgstr "Ідентифікатор набору матриць"
 
 msgid "No layers defined by getCapabilities document: {0}"
 msgstr "Не визначено жодного шару через getCapabilities докменту: {0}"
@@ -4498,7 +4515,7 @@ msgid "Key ''{0}'' looks like ''{1}''."
 msgstr "Ключ ''{0}'' схожий на ''{1}''."
 
 msgid "Misspelled property key"
-msgstr ""
+msgstr "Опечатка в ключі властивостей"
 
 msgid "Key ''{0}'' not in presets."
 msgstr "Ключа ''{0}'' немає в заготовках."
@@ -4784,9 +4801,6 @@ msgstr "Не показувати знов (ця сесія)"
 msgid "Do not show again (remembers choice)"
 msgstr "Не показувати знову (запам’ятати вибір)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "неповний елемент"
 
@@ -8623,9 +8637,6 @@ msgstr "Зв’язок {0}"
 msgid "Object"
 msgstr "Об’єкт"
 
-msgid "not present"
-msgstr "відсутній"
-
 msgid "Changeset comment"
 msgstr "Коментар набору змін"
 
@@ -9695,6 +9706,9 @@ msgstr "Масштаб пікселів {0}"
 msgid "Best zoom: {0}"
 msgstr "Найкращий масштаб: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "Розрахунковий розмір кеша: {0}"
+
 msgid "Cache stats: {0}"
 msgstr "Статистика кеша: {0}"
 
@@ -9800,6 +9814,17 @@ msgstr "Попередня мітка"
 msgid "Jump to previous marker"
 msgstr "Перейти до попередньої мітки"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+"Для додаваня ще одного шару JOSM потрібно виділити не менше ніж "
+"{0,number,#}МБ пам’яті за допомогою параметра -Xmx{0,number,#}M (див. see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Зараз для JOSM виділено {1,number,#}МБ"
+
 msgid "All projections are supported"
 msgstr "Підтримуються усі проекції"
 
@@ -11935,7 +11960,7 @@ msgid "Cache name"
 msgstr "Назва кешу"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Кількість об’єктів"
 
 msgid "imagery fade"
 msgstr "затемнювання фону"
@@ -11961,11 +11986,8 @@ msgstr "Тека кешу квадратів мапи: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "Максимальний обсяг дискового простору (на кожний шар фону) у Мб: "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "Максимальна кількість об’єктів в кеші: "
-
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Часовий пояс:"
 
 msgid "Imagery Preferences"
 msgstr "Параметри фону"
@@ -13099,10 +13121,12 @@ msgstr "Новий зв’язок"
 msgid ""
 "The preset <i>{0}</i> cannot be applied since nothing has been selected!"
 msgstr ""
+"Неможливо застосувати заготовку <i>{0}</i>, так як нічого не виділено!"
 
 msgid ""
 "The preset <i>{0}</i> cannot be applied since the selection is unsuitable!"
 msgstr ""
+"Неможливо застосувати заготовку <i>{0}</i>, так виділені невідповідні об’єкти"
 
 msgid "Change {0} object"
 msgid_plural "Change {0} objects"
@@ -13122,35 +13146,53 @@ msgstr "Змінити теґи"
 msgid "Add or remove toolbar button"
 msgstr "Додати або вилучити кнопку на панель інструментів"
 
-msgid "Unknown requisite: {0}"
-msgstr "Невідомий запит: {0}"
+msgid "Unknown type: {0}"
+msgstr "Невідомий тип: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "Некоректний вираз: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "Група заготовок {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Більш детальна інформація про цей елемент"
+msgid "Preset group {0}"
+msgstr "Група заготовок {0}"
 
-msgid "Available roles"
-msgstr "Доступні ролі"
+msgid "Reference {0} is being used before it was defined"
+msgstr "Посилання {0} було використане до того, як воно було визначено"
 
-msgid "role"
-msgstr "роль"
+msgid "Roles cannot appear more than once"
+msgstr "Ролі не можуть зазначатись більше одного разу"
 
-msgid "count"
-msgstr "кількість"
+msgid "Preset role element without parent"
+msgstr "Роль елемента заготовки без батьків"
 
-msgid "elements"
-msgstr "елементи"
+msgid "Preset sub element without parent"
+msgstr "Вкладені елементи заготовок без батьків"
 
-msgid "Optional Attributes:"
-msgstr "Необов’язкові атрибути:"
+msgid "Error parsing {0}: "
+msgstr "Помилка синтаксичного аналізу: {0} "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Оберіть авто-збільшення {0} для цього поля"
+msgid "Search preset"
+msgstr "Пошук заготовок"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Скасувати авто-збільшення для цього поля"
+msgid "Show preset search dialog"
+msgstr "Показати вікно із заготовками пошуку"
+
+msgid "Search presets"
+msgstr "Пошук заготовок"
+
+msgid "Presets"
+msgstr "Заготовки"
+
+msgid "Search for objects by preset"
+msgstr "Пошук об’єктів по заготовках"
+
+msgid "Show only applicable to selection"
+msgstr "Показати тільки ті, що застосовуються для виділеного"
+
+msgid "Search in tags"
+msgstr "Шукати в теґах"
+
+msgid "Add toolbar button"
+msgstr "Додати кнопку на панель"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -13190,53 +13232,35 @@ msgstr ""
 "Зламаний шаблон теґів \"{0}-{1}\" — кількість елементів у "
 "''short_descriptions'' повинна дорівнювати кількості ''values''"
 
-msgid "Unknown type: {0}"
-msgstr "Невідомий тип: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "Група заготовок {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "Група заготовок {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "Посилання {0} було використане до того, як воно було визначено"
-
-msgid "Roles cannot appear more than once"
-msgstr "Ролі не можуть зазначатись більше одного разу"
-
-msgid "Preset role element without parent"
-msgstr "Роль елемента заготовки без батьків"
-
-msgid "Preset sub element without parent"
-msgstr "Вкладені елементи заготовок без батьків"
+msgid "More information about this feature"
+msgstr "Більш детальна інформація про цей елемент"
 
-msgid "Error parsing {0}: "
-msgstr "Помилка синтаксичного аналізу: {0} "
+msgid "Optional Attributes:"
+msgstr "Необов’язкові атрибути:"
 
-msgid "Search preset"
-msgstr "Пошук заготовок"
+msgid "Unknown requisite: {0}"
+msgstr "Невідомий запит: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Показати вікно із заготовками пошуку"
+msgid "Illegal member expression: {0}"
+msgstr "Некоректний вираз: {0}"
 
-msgid "Search presets"
-msgstr "Пошук заготовок"
+msgid "Available roles"
+msgstr "Доступні ролі"
 
-msgid "Presets"
-msgstr "Заготовки"
+msgid "role"
+msgstr "роль"
 
-msgid "Search for objects by preset"
-msgstr "Пошук об’єктів по заготовках"
+msgid "count"
+msgstr "кількість"
 
-msgid "Show only applicable to selection"
-msgstr "Показати тільки ті, що застосовуються для виділеного"
+msgid "elements"
+msgstr "елементи"
 
-msgid "Search in tags"
-msgstr "Шукати в теґах"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Оберіть авто-збільшення {0} для цього поля"
 
-msgid "Add toolbar button"
-msgstr "Додати кнопку на панель"
+msgid "Cancel auto-increment for this field"
+msgstr "Скасувати авто-збільшення для цього поля"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13525,7 +13549,7 @@ msgid "GeoJSON Files"
 msgstr "Файли GeoJSON"
 
 msgid "Projected GeoJSON Files"
-msgstr ""
+msgstr "Файли GeoJSON"
 
 msgid "Layer ''{0}'' not supported"
 msgstr "Шар ''{0}'' не підтримується"
@@ -13636,12 +13660,6 @@ msgstr "Повідомлення"
 msgid "{0} not available (offline mode)"
 msgstr "{0} недоступне (автономний режим)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Елемент з ідентифікатором {0} відсутній у локальній базі даних. Не можу "
-"з’ясувати тип елемента."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Отримання пакету точок з ''{0}''"
 
@@ -16004,7 +16022,7 @@ msgid "SPW(allonie) 2009 aerial imagery"
 msgstr "SPW (allonie) 2009 аерофотознімки"
 
 msgid "cadastre: for names and house numbers only, bad geometry"
-msgstr ""
+msgstr "кадастр: тільки для назв і номерів будинків, неточна геометрія"
 
 msgid "IBGE Mapa de Setores Urbanos"
 msgstr "IBGE Мапа міських районів"
@@ -16135,6 +16153,9 @@ msgstr "Тулуза - ортофотоплан 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Тур - ортофото 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -16429,6 +16450,9 @@ msgstr "Забже: ортофото 2011"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Траси"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16615,12 +16639,18 @@ msgstr "Суррей, аерозйомка"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-дюймова мапа Шотландії 1842-82"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - ОС 1:25000 1-й серії 1937-61"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - ОС 1-дюймова 7-ї серії 1955-61"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "OS 1:25000 історична (OSM-Best)"
 
@@ -16880,6 +16910,16 @@ msgstr ""
 "навколо обраного центру."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16928,18 +16968,13 @@ msgstr ""
 "Перейдіть за посилання, щоб ознайомитись із стандартними командами (arc, "
 "circle тощо)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-"Надає бібліотеку Commons Imaging. Не призначений для безпосереднього "
-"встановлення користувачами, встановлюється тільки як залежність для інших "
-"втулків."
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 "(Увага: Експериментальна версія!) Інструмент для об’єднання (злиття) даних."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Створює сітку з ліній."
 
@@ -17325,6 +17360,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Зробити ряд будинків по вулиці з одного блоку."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17658,61 +17698,9 @@ msgstr "Оператор"
 msgid "Service Times"
 msgstr "Розклад служінь"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "захід,схід"
-
-msgid "Su 09:30,11:00"
-msgstr "Нд 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Сб,Нд,Свята 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Сб 18:00; Нд 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Пт 08:00-18:00; Кві 10-15 вих.; Чер 07:00-20:00; Сер вих.; Гру 24 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "Сб 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "Тижд 1-53/2 Пт 09:00-12:00; Тижд 2-52/2 Ср 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "Години роботи"
 
-msgid "24/7"
-msgstr "Цілодобово"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Сб-Нд 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Пн-Пт 08:30-20:00; Сб,Нд 08:00-15:00; крім Свят"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Пн-Вс 08:00-18:00; Кві 10-15 вих.; Чер 08:00-14:00; Сер вих.; Гру 25 вих."
-
-msgid "sunrise-sunset"
-msgstr "схід-захід"
-
-msgid "Su 10:00+"
-msgstr "Нд 10:00+"
-
 msgid "Wheelchairs"
 msgstr "Інвалідним візком"
 
@@ -20228,6 +20216,33 @@ msgstr "Хостел/Туристичний табір"
 msgid "Alpine Hut"
 msgstr "Гірський притулок"
 
+msgid "Wilderness Hut"
+msgstr "Сорожка"
+
+msgid "Access rights"
+msgstr "Права доступу"
+
+msgid "Shower"
+msgstr "Душ"
+
+msgid "seasonal"
+msgstr "періодично"
+
+msgid "Reservation"
+msgstr "Резервування"
+
+msgid "required"
+msgstr "обов’язково"
+
+msgid "recommended"
+msgstr "рекомендуєтся"
+
+msgid "members_only"
+msgstr "тільки для членів"
+
+msgid "Closer Description"
+msgstr "Детальний опис"
+
 msgid "Caravan Site/RV Park"
 msgstr "Стоянка для будинків на колесах"
 
@@ -20339,12 +20354,6 @@ msgstr "Пивниця під відкритим небом"
 msgid "Bar"
 msgstr "Бар"
 
-msgid "Night Club"
-msgstr "Нічний клуб"
-
-msgid "Strip Club"
-msgstr "Стрип-клуб"
-
 msgid "Tourism"
 msgstr "Туризм"
 
@@ -20396,9 +20405,6 @@ msgstr "місто"
 msgid "region"
 msgstr "область"
 
-msgid "Closer Description"
-msgstr "Детальний опис"
-
 msgid "Routes shown for:"
 msgstr "Маршрути:"
 
@@ -20520,12 +20526,6 @@ msgstr "Сауна"
 msgid "Horse Riding"
 msgstr "Прогулянка верхи"
 
-msgid "Casino"
-msgstr "Казино"
-
-msgid "Brothel"
-msgstr "Дім розпусти"
-
 msgid "Playground"
 msgstr "Ігровий майданчик"
 
@@ -20557,6 +20557,18 @@ msgstr "Рибалка"
 msgid "Private Swimming Pool"
 msgstr "Приватний басейн"
 
+msgid "Night Club"
+msgstr "Нічний клуб"
+
+msgid "Casino"
+msgstr "Казино"
+
+msgid "Strip Club"
+msgstr "Стрип-клуб"
+
+msgid "Brothel"
+msgstr "Дім розпусти"
+
 msgid "Culture"
 msgstr "Культура"
 
@@ -20864,11 +20876,17 @@ msgstr "Ветеринар"
 msgid "Toilets/Restrooms"
 msgstr "Туалет/Вбиральня"
 
-msgid "Access rights"
-msgstr "Права доступу"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "періодично"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "зі зливом"
@@ -20897,39 +20915,27 @@ msgstr "навприсядки"
 msgid "urinal"
 msgstr "пісуар"
 
-msgid "Shower"
-msgstr "Душ"
-
 msgid "Post Box"
 msgstr "Поштова скринька"
 
 msgid "Collection times"
 msgstr "Час виїмки"
 
-msgid "Mo-Sa 09:00"
-msgstr "Пн-Сб 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Пн-Пт 17:30; Сб 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Пн-Пт 15:00,19:00; Сб 15:10; Нд 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
-msgstr ""
+msgstr "тумба"
 
 msgctxt "post_box"
 msgid "lamp"
-msgstr ""
+msgstr "на фонарному стовпі"
 
 msgctxt "post_box"
 msgid "wall"
-msgstr ""
+msgstr "настінна"
 
 msgctxt "post_box"
 msgid "meter"
-msgstr ""
+msgstr "франко-пошта"
 
 msgid "Drive through"
 msgstr "Обслуговування автомобілістів"
@@ -21208,6 +21214,24 @@ msgstr "всмоктування"
 msgid "Count"
 msgstr "Кількість"
 
+msgid "Compressed Air"
+msgstr "Компресор"
+
+msgid "Valves"
+msgstr "Вентиль"
+
+msgid "Dunlop (Woods)"
+msgstr "Вело-ніпель Dunlop (Woods)"
+
+msgid "Schrader"
+msgstr "Автомобільний золотник"
+
+msgid "Sclaverand (Presta)"
+msgstr "Sclaverand (Presta)"
+
+msgid "Regina"
+msgstr "Regina"
+
 msgid "Advertising Column"
 msgstr "Рекламна тумба"
 
@@ -21895,9 +21919,6 @@ msgstr "Маяк"
 msgid "Street Lamp"
 msgstr "Вуличний ліхтар"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Пн-Пт 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "Станція спостереження"
 
@@ -23035,11 +23056,8 @@ msgstr "Газетна стійка"
 msgid "Ticket"
 msgstr "Квитки"
 
-msgid "Department Store"
-msgstr "Універмаг"
-
-msgid "Mall"
-msgstr "Торговельний центр"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Побутова хімія"
@@ -23065,12 +23083,15 @@ msgstr "Медтехніка"
 msgid "Jewellery"
 msgstr "Ювелірні вироби"
 
-msgid "Gift/Souvenir"
-msgstr "Подарунки/Сувеніри"
-
 msgid "Erotic"
 msgstr "Секс-шоп"
 
+msgid "Department Store"
+msgstr "Універмаг"
+
+msgid "Mall"
+msgstr "Торговельний центр"
+
 msgid "Florist"
 msgstr "Квітковий магазин"
 
@@ -23095,6 +23116,9 @@ msgstr "Музичні інструменти"
 msgid "Toys"
 msgstr "Іграшки"
 
+msgid "Gift/Souvenir"
+msgstr "Подарунки/Сувеніри"
+
 msgid "Variety Store"
 msgstr "Універсам"
 
@@ -23110,6 +23134,9 @@ msgstr "Валізи"
 msgid "Pet"
 msgstr "Домашні улюбленці"
 
+msgid "Photo"
+msgstr "Фото"
+
 msgid "Funeral Directors"
 msgstr "Служба поховань"
 
@@ -24435,7 +24462,7 @@ msgid "{0} and {1} together with {2} and conflicting values"
 msgstr "{0} і {1} разом з {2} і значеннями, що спричиняють конфлікт"
 
 msgid "Suspicious tag combination: {0} and {1}"
-msgstr ""
+msgstr "Підозріла комбінація тегів: {0} і {1}"
 
 msgid "{0}={1} is deprecated"
 msgstr "{0}={1} є застарілим"
@@ -25102,9 +25129,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr "Правка адрес"
 
-msgid "Searching"
-msgstr "Пошук"
-
 msgid "Guess values for "
 msgstr "Вгадати значення "
 
@@ -25406,9 +25430,6 @@ msgstr "Попередня помилка  (OSMI)"
 msgid "Next OSMI bug"
 msgstr "Наступна помилка  (OSMI)"
 
-msgid "Osm Inspector Bugs"
-msgstr "Помилки з Osm Inspector"
-
 msgid "OSM Inspector Bugs"
 msgstr "Інспектор помилок (OSMI)"
 
@@ -26196,17 +26217,6 @@ msgid "Auto sourcing"
 msgstr "Автоматичні джерела"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Втулок cadastre-fr використовував F11 для захвату,\n"
-"ця клавіша тепер використовується для перемикання\n"
-"у повноекранний режим. F10 — нова клавіша для захвату,\n"
-"але ви можете перепризначити її у разі потреби."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26887,6 +26897,82 @@ msgstr "Нічого не виділено"
 msgid "Invalid reference or subject"
 msgstr "Помилковий основний чи підлеглий об’єкти"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Адреса"
 
@@ -28399,12 +28485,18 @@ msgstr "Місяці"
 msgid "Days"
 msgstr "Дні"
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr "Фільтр Mapillary"
 
 msgid "Open Mapillary filter dialog"
 msgstr "Відкрити діалог фільтра Mapillary"
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr "Завантажені знімки"
 
@@ -28420,6 +28512,9 @@ msgstr "Історія Mapillary"
 msgid "Open Mapillary history dialog"
 msgstr "Відкрити історію Mapillary"
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr "Відкрити вікно Mapillary"
 
@@ -31018,6 +31113,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Ряд будинків по вулиці"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Неможливо помістити точку за межі світу."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Огляд"
 
diff --git a/i18n/po/ur.po b/i18n/po/ur.po
index 65d1265..187138d 100644
--- a/i18n/po/ur.po
+++ b/i18n/po/ur.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2010-05-13 04:15+0000\n"
 "Last-Translator: Shoaib Mirza <Unknown>\n"
 "Language-Team: Urdu <ur at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:05+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:01+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: ur\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr ""
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr ""
 
@@ -2081,17 +2090,11 @@ msgid ""
 "delete."
 msgstr ""
 
-msgid "Cannot place a node outside of the world."
-msgstr ""
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr ""
-
 msgid "Cannot delete node that has tags"
 msgstr ""
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr ""
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr ""
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr ""
 
@@ -4359,9 +4376,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr ""
 
-msgid " [id: {0}]"
-msgstr ""
-
 msgid "incomplete"
 msgstr ""
 
@@ -7851,9 +7865,6 @@ msgstr ""
 msgid "Object"
 msgstr ""
 
-msgid "not present"
-msgstr ""
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8750,6 +8761,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8849,6 +8863,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10779,9 +10800,6 @@ msgstr ""
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11850,34 +11868,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
+msgid "Unknown type: {0}"
 msgstr ""
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
 msgstr ""
 
-msgid "More information about this feature"
+msgid "Preset group {0}"
 msgstr ""
 
-msgid "Available roles"
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "role"
+msgid "Roles cannot appear more than once"
 msgstr ""
 
-msgid "count"
+msgid "Preset role element without parent"
 msgstr ""
 
-msgid "elements"
+msgid "Preset sub element without parent"
 msgstr ""
 
-msgid "Optional Attributes:"
+msgid "Error parsing {0}: "
 msgstr ""
 
-msgid "Select auto-increment of {0} for this field"
+msgid "Search preset"
 msgstr ""
 
-msgid "Cancel auto-increment for this field"
+msgid "Show preset search dialog"
+msgstr ""
+
+msgid "Search presets"
+msgstr ""
+
+msgid "Presets"
+msgstr ""
+
+msgid "Search for objects by preset"
+msgstr ""
+
+msgid "Show only applicable to selection"
+msgstr ""
+
+msgid "Search in tags"
+msgstr ""
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11908,52 +11944,34 @@ msgid ""
 "''short_descriptions'' must be the same as in ''values''"
 msgstr ""
 
-msgid "Unknown type: {0}"
-msgstr ""
-
-msgid "Preset group {1} / {0}"
-msgstr ""
-
-msgid "Preset group {0}"
-msgstr ""
-
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
-
-msgid "Roles cannot appear more than once"
-msgstr ""
-
-msgid "Preset role element without parent"
-msgstr ""
-
-msgid "Preset sub element without parent"
+msgid "More information about this feature"
 msgstr ""
 
-msgid "Error parsing {0}: "
+msgid "Optional Attributes:"
 msgstr ""
 
-msgid "Search preset"
+msgid "Unknown requisite: {0}"
 msgstr ""
 
-msgid "Show preset search dialog"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Search presets"
+msgid "Available roles"
 msgstr ""
 
-msgid "Presets"
+msgid "role"
 msgstr ""
 
-msgid "Search for objects by preset"
+msgid "count"
 msgstr ""
 
-msgid "Show only applicable to selection"
+msgid "elements"
 msgstr ""
 
-msgid "Search in tags"
+msgid "Select auto-increment of {0} for this field"
 msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12300,10 +12318,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr ""
 
@@ -14450,6 +14464,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14742,6 +14759,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14928,12 +14948,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15188,6 +15214,16 @@ msgid ""
 msgstr ""
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15221,12 +15257,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr ""
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15533,6 +15567,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr ""
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15848,59 +15887,9 @@ msgstr ""
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr ""
 
-msgid "24/7"
-msgstr ""
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr ""
 
@@ -18387,6 +18376,33 @@ msgstr ""
 msgid "Alpine Hut"
 msgstr ""
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18498,12 +18514,6 @@ msgstr ""
 msgid "Bar"
 msgstr ""
 
-msgid "Night Club"
-msgstr ""
-
-msgid "Strip Club"
-msgstr ""
-
 msgid "Tourism"
 msgstr ""
 
@@ -18555,9 +18565,6 @@ msgstr ""
 msgid "region"
 msgstr ""
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr ""
 
@@ -18679,12 +18686,6 @@ msgstr ""
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr ""
-
 msgid "Playground"
 msgstr ""
 
@@ -18716,6 +18717,18 @@ msgstr ""
 msgid "Private Swimming Pool"
 msgstr ""
 
+msgid "Night Club"
+msgstr ""
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr ""
+
+msgid "Brothel"
+msgstr ""
+
 msgid "Culture"
 msgstr ""
 
@@ -19023,10 +19036,16 @@ msgstr ""
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19056,24 +19075,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr ""
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19367,6 +19374,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20054,9 +20079,6 @@ msgstr ""
 msgid "Street Lamp"
 msgstr ""
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr ""
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21192,10 +21214,7 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr ""
-
-msgid "Mall"
+msgid "For the body"
 msgstr ""
 
 msgid "Chemist"
@@ -21222,10 +21241,13 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
+msgid "Erotic"
 msgstr ""
 
-msgid "Erotic"
+msgid "Department Store"
+msgstr ""
+
+msgid "Mall"
 msgstr ""
 
 msgid "Florist"
@@ -21252,6 +21274,9 @@ msgstr ""
 msgid "Toys"
 msgstr ""
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21267,6 +21292,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -23183,9 +23211,6 @@ msgstr ""
 msgid "Address Edit"
 msgstr ""
 
-msgid "Searching"
-msgstr ""
-
 msgid "Guess values for "
 msgstr ""
 
@@ -23479,9 +23504,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24136,13 +24158,6 @@ msgid "Auto sourcing"
 msgstr ""
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24768,6 +24783,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26201,12 +26292,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26222,6 +26319,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28681,6 +28781,62 @@ msgstr ""
 msgid "Terrace"
 msgstr ""
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr ""
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr ""
 
diff --git a/i18n/po/vi.po b/i18n/po/vi.po
index 2a5eb41..33dfaf0 100644
--- a/i18n/po/vi.po
+++ b/i18n/po/vi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
 "PO-Revision-Date: 2015-05-14 20:17+0000\n"
 "Last-Translator: Mạnh <laituanmanh32 at gmail.com>\n"
 "Language-Team: Vietnamese <vi at li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:05+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:02+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: vi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1457,6 +1457,15 @@ msgstr[0] ""
 "Có nhiều cách sử dụng các nút bạn chọn. Hãy chọnCách cũng có.Có nhiều hơn 1 "
 "đường đang sử dụng nốt bạn chọn. Xin hãy chọn đường."
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "Bạn phải chọn hai hoặc nhiều hơn các nút để phân chia một cách tròn."
 
@@ -2225,16 +2234,10 @@ msgstr ""
 "Nhấn vào đây để di chuyển các nút nhấn mạnh. Giữ Ctrl để thêm các nút mới, "
 "hoặc Alt đểDelete"
 
-msgid "Cannot place a node outside of the world."
-msgstr "Không thể đặt một nút bên ngoài của thế giới."
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "Thêm một nút mới vào cách"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "Không thể xóa nút đó được tham chiếu bởi nhiều đối tượng"
-
 msgid "Cannot delete node that has tags"
 msgstr "Không thể xóa nút đó có thẻ"
 
@@ -2674,6 +2677,12 @@ msgstr "tất cả các trẻ em của các đối tượng phù hợp với kh
 msgid "all parents of objects matching the expression"
 msgstr "tất cả phụ huynh của các đối tượng phù hợp với khái niệm"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "n-th thành viên của mối quan hệ và / hoặc n-th nút của cách"
 
@@ -2699,6 +2708,14 @@ msgstr ""
 "đối tượng (và tất cả các nút chiều / thành viên liên quan của nó) trong khu "
 "vực được tải về"
 
+msgid "Searching"
+msgstr "Tìm kiếm"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "Không có trận đấu tìm thấy cho '' {0} ''"
 
@@ -4634,9 +4651,6 @@ msgstr "Không hiển thị lần nữa (phiên này)"
 msgid "Do not show again (remembers choice)"
 msgstr "Không hiển thị lần nữa (nhớ lựa chọn)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "không đầy đủ"
 
@@ -8374,9 +8388,6 @@ msgstr "Quan hệ {0}"
 msgid "Object"
 msgstr "đối tượng"
 
-msgid "not present"
-msgstr "không có mặt"
-
 msgid "Changeset comment"
 msgstr "changeset bình luận"
 
@@ -9374,6 +9385,9 @@ msgstr "quy mô Pixel: {0}"
 msgid "Best zoom: {0}"
 msgstr "zoom tốt nhất: {0}"
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr "số liệu thống kê Cache: {0}"
 
@@ -9471,6 +9485,13 @@ msgstr "đánh dấu trước"
 msgid "Jump to previous marker"
 msgstr "Nhảy đến điểm đánh dấu trước đó"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "Tất cả các dự được hỗ trợ"
 
@@ -11588,9 +11609,6 @@ msgstr "thư mục Tile cache: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -12736,35 +12754,53 @@ msgstr "Thay đổi Tags"
 msgid "Add or remove toolbar button"
 msgstr "Thêm hoặc loại bỏ nút thanh công cụ"
 
-msgid "Unknown requisite: {0}"
-msgstr "điều kiện tiên quyết Unknown: {0}"
+msgid "Unknown type: {0}"
+msgstr "loại Unknown: {0}"
 
-msgid "Illegal member expression: {0}"
-msgstr "biểu thành viên bất hợp pháp: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "nhóm Preset {1} / {0}"
 
-msgid "More information about this feature"
-msgstr "Thông tin thêm về tính năng này"
+msgid "Preset group {0}"
+msgstr "nhóm Preset {0}"
 
-msgid "Available roles"
-msgstr "role có sẵn"
+msgid "Reference {0} is being used before it was defined"
+msgstr "tham khảo {0} đang được sử dụng trước khi nó được định nghĩa"
 
-msgid "role"
-msgstr "vai trò"
+msgid "Roles cannot appear more than once"
+msgstr "Vai trò không thể xuất hiện nhiều hơn một lần"
 
-msgid "count"
-msgstr "đếm"
+msgid "Preset role element without parent"
+msgstr "yếu tố đóng vai trò Preset mà không có cha mẹ"
 
-msgid "elements"
-msgstr "yếu tố"
+msgid "Preset sub element without parent"
+msgstr "yếu tố phụ Preset mà không cần cha mẹ"
 
-msgid "Optional Attributes:"
-msgstr "Tùy chọn thuộc tính:"
+msgid "Error parsing {0}: "
+msgstr "Lỗi phân tích cú pháp {0}: "
 
-msgid "Select auto-increment of {0} for this field"
-msgstr "Chọn auto-increment của {0} cho lĩnh vực này"
+msgid "Search preset"
+msgstr "Tìm kiếm cài sẵn"
 
-msgid "Cancel auto-increment for this field"
-msgstr "Hủy auto-increment cho lĩnh vực này"
+msgid "Show preset search dialog"
+msgstr "Hiển thị cài sẵn tìm kiếm hộp thoại"
+
+msgid "Search presets"
+msgstr "Tìm kiếm cài đặt trước"
+
+msgid "Presets"
+msgstr "Presets"
+
+msgid "Search for objects by preset"
+msgstr "Tìm kiếm cho các đối tượng bằng cách cài sẵn"
+
+msgid "Show only applicable to selection"
+msgstr "Hiện chỉ áp dụng đối với lựa chọn"
+
+msgid "Search in tags"
+msgstr "Tìm kiếm trong thẻ"
+
+msgid "Add toolbar button"
+msgstr "nút trên thanh công cụ Add"
 
 msgid "{0}:"
 msgstr "{0}:"
@@ -12804,53 +12840,35 @@ msgstr ""
 "Broken tagging preset \" {0} - {1} \"- số mục trong'' Short_descriptions '' "
 "phải giống như trong '' giá trị ''"
 
-msgid "Unknown type: {0}"
-msgstr "loại Unknown: {0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "nhóm Preset {1} / {0}"
-
-msgid "Preset group {0}"
-msgstr "nhóm Preset {0}"
-
-msgid "Reference {0} is being used before it was defined"
-msgstr "tham khảo {0} đang được sử dụng trước khi nó được định nghĩa"
-
-msgid "Roles cannot appear more than once"
-msgstr "Vai trò không thể xuất hiện nhiều hơn một lần"
-
-msgid "Preset role element without parent"
-msgstr "yếu tố đóng vai trò Preset mà không có cha mẹ"
-
-msgid "Preset sub element without parent"
-msgstr "yếu tố phụ Preset mà không cần cha mẹ"
+msgid "More information about this feature"
+msgstr "Thông tin thêm về tính năng này"
 
-msgid "Error parsing {0}: "
-msgstr "Lỗi phân tích cú pháp {0}: "
+msgid "Optional Attributes:"
+msgstr "Tùy chọn thuộc tính:"
 
-msgid "Search preset"
-msgstr "Tìm kiếm cài sẵn"
+msgid "Unknown requisite: {0}"
+msgstr "điều kiện tiên quyết Unknown: {0}"
 
-msgid "Show preset search dialog"
-msgstr "Hiển thị cài sẵn tìm kiếm hộp thoại"
+msgid "Illegal member expression: {0}"
+msgstr "biểu thành viên bất hợp pháp: {0}"
 
-msgid "Search presets"
-msgstr "Tìm kiếm cài đặt trước"
+msgid "Available roles"
+msgstr "role có sẵn"
 
-msgid "Presets"
-msgstr "Presets"
+msgid "role"
+msgstr "vai trò"
 
-msgid "Search for objects by preset"
-msgstr "Tìm kiếm cho các đối tượng bằng cách cài sẵn"
+msgid "count"
+msgstr "đếm"
 
-msgid "Show only applicable to selection"
-msgstr "Hiện chỉ áp dụng đối với lựa chọn"
+msgid "elements"
+msgstr "yếu tố"
 
-msgid "Search in tags"
-msgstr "Tìm kiếm trong thẻ"
+msgid "Select auto-increment of {0} for this field"
+msgstr "Chọn auto-increment của {0} cho lĩnh vực này"
 
-msgid "Add toolbar button"
-msgstr "nút trên thanh công cụ Add"
+msgid "Cancel auto-increment for this field"
+msgstr "Hủy auto-increment cho lĩnh vực này"
 
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
@@ -13251,12 +13269,6 @@ msgstr "tin nhắn thông báo dạng"
 msgid "{0} not available (offline mode)"
 msgstr "{0} không có sẵn (chế độ offline)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr ""
-"Không có nguyên thủy với id {0} trong tập dữ liệu địa phương. Không thể suy "
-"luận kiểu nguyên thủy."
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "Đang tìm nạp một gói các nút từ '' {0} ''"
 
@@ -15635,6 +15647,9 @@ msgstr "Toulouse - Orthophotoplan 2007"
 msgid "Tours - Orthophotos 2013"
 msgstr "Tours - Orthophotos 2013"
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -15931,6 +15946,9 @@ msgstr "Zabrze: Ortofotomapa 2011 (ảnh trên không)"
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki (đường dẫn)"
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr "ScanEx IRS"
 
@@ -16117,12 +16135,18 @@ msgstr "Air Khảo sát Surrey"
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr "NLS - OS 6-inch Scotland 1842-1882"
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr "NLS - OS 1: 25k 1 series 1937-1961"
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr "NLS - OS 1-inch 7 series 1955-1961"
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr "hệ điều hành 1: 25k lịch sử (OSM-Best)"
 
@@ -16381,6 +16405,16 @@ msgstr ""
 "quanh một trục lựa chọn."
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -16427,14 +16461,12 @@ msgstr ""
 "Thực hiện một dòng lệnh và cho phép tạo ra các lệnh của bạn. Xem liên kết "
 "choLệnh chuẩn (arc, hình tròn vv)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr ""
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(Cảnh báo: Thử nghiệm!) Công cụ cho conflating (sáp nhập) dữ liệu."
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "Tạo một mạng lưới các cách khác nhau."
 
@@ -16819,6 +16851,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "Hãy nhà bậc thang ra khỏi khối duy nhất."
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -17150,64 +17187,9 @@ msgstr "điều hành"
 msgid "Service Times"
 msgstr "Dịch vụ Times"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "hoàng hôn, mặt trời mọc"
-
-msgid "Su 09:30,11:00"
-msgstr "Su 09: 30,11: 00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "Sa, Su, PH 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "Sa 18:00; 10:45 Su"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-"Cha 08: 00-18: 00; 10-ngày 15 tháng 4 off; Jun 07: 00-20: 00; Aug off; Dec "
-"24 08: 00-24: 00"
-
-msgid "Sa 10:00+"
-msgstr "Sa 10: 00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-"tuần 1-53 / 2 Fr 09: 00-12: 00; tuần 2-52 / 2 Chúng tôi 09: 00-12: 00"
-
 msgid "Opening Hours"
 msgstr "Giờ mở cửa"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08: 30-12: 30,15: 30-20: 00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "Sa-Su 00: 00-24: 00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "Mo-Fr 08: 30-20: 00; Sa, Su 08: 00-15: 00; PH off"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "Mo-Fr 08: 30-20: 00, Tu-Su 08: 00-15: 00; Sa 08: 00-12: 00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-"Mo-Su 08: 00-18: 00; 10-ngày 15 tháng 4 off; 08 tháng 6: 00-14: 00; Tháng "
-"Tám off; 25 tháng 12 off"
-
-msgid "sunrise-sunset"
-msgstr "mặt trời mọc, mặt trời lặn"
-
-msgid "Su 10:00+"
-msgstr "Su 10: 00+"
-
 msgid "Wheelchairs"
 msgstr "Xe lăn"
 
@@ -19722,6 +19704,33 @@ msgstr "Hostel"
 msgid "Alpine Hut"
 msgstr "Alpine Hut"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "quyền truy cập"
+
+msgid "Shower"
+msgstr "Shower"
+
+msgid "seasonal"
+msgstr "theo mùa"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "Closer Mô tả"
+
 msgid "Caravan Site/RV Park"
 msgstr "Caravan / RV Park"
 
@@ -19833,12 +19842,6 @@ msgstr "Beer Garden"
 msgid "Bar"
 msgstr "Bar"
 
-msgid "Night Club"
-msgstr "Night Club"
-
-msgid "Strip Club"
-msgstr "Strip Club"
-
 msgid "Tourism"
 msgstr "Du lịch"
 
@@ -19892,9 +19895,6 @@ msgstr "thành phố"
 msgid "region"
 msgstr "khu vực"
 
-msgid "Closer Description"
-msgstr "Closer Mô tả"
-
 msgid "Routes shown for:"
 msgstr "Tuyến đường thể hiện cho:"
 
@@ -20016,12 +20016,6 @@ msgstr "hơi"
 msgid "Horse Riding"
 msgstr "Cưỡi ngựa"
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "thổ"
-
 msgid "Playground"
 msgstr "sân chơi"
 
@@ -20053,6 +20047,18 @@ msgstr "Câu cá"
 msgid "Private Swimming Pool"
 msgstr "riêng Bể bơi"
 
+msgid "Night Club"
+msgstr "Night Club"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "Strip Club"
+
+msgid "Brothel"
+msgstr "thổ"
+
 msgid "Culture"
 msgstr "Văn hóa"
 
@@ -20360,11 +20366,17 @@ msgstr "thú y"
 msgid "Toilets/Restrooms"
 msgstr "Nhà vệ sinh / Nhà vệ sinh"
 
-msgid "Access rights"
-msgstr "quyền truy cập"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "theo mùa"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr "tuôn ra"
@@ -20393,24 +20405,12 @@ msgstr "ngồi xổm"
 msgid "urinal"
 msgstr "nước tiểu"
 
-msgid "Shower"
-msgstr "Shower"
-
 msgid "Post Box"
 msgstr "Post Box"
 
 msgid "Collection times"
 msgstr "Bộ sưu tập lần"
 
-msgid "Mo-Sa 09:00"
-msgstr "Mo-Sa 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "Mo-Fr 17:30; 12:00 Sa"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "Mo-Fr 15: 00,19: 00; Sa 15:10; 10:30 Su"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -20704,6 +20704,24 @@ msgstr "hút"
 msgid "Count"
 msgstr "đếm"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "Advertising Cột"
 
@@ -21391,9 +21409,6 @@ msgstr "Ngọn hải đăng"
 msgid "Street Lamp"
 msgstr "Street đèn"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "Mo-Fr 22: 00-05: 00"
-
 msgid "Monitoring Station"
 msgstr "Giám sát Station"
 
@@ -22531,11 +22546,8 @@ msgstr "Báo đế"
 msgid "Ticket"
 msgstr "Ticket"
 
-msgid "Department Store"
-msgstr "Department Store"
-
-msgid "Mall"
-msgstr "Mall"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "Nhà hóa học"
@@ -22561,12 +22573,15 @@ msgstr "Medical Supply"
 msgid "Jewellery"
 msgstr "Đồ trang sức"
 
-msgid "Gift/Souvenir"
-msgstr "quà tặng / lưu niệm"
-
 msgid "Erotic"
 msgstr "Erotic"
 
+msgid "Department Store"
+msgstr "Department Store"
+
+msgid "Mall"
+msgstr "Mall"
+
 msgid "Florist"
 msgstr "Florist"
 
@@ -22591,6 +22606,9 @@ msgstr "Cụ Musical"
 msgid "Toys"
 msgstr "Đồ chơi"
 
+msgid "Gift/Souvenir"
+msgstr "quà tặng / lưu niệm"
+
 msgid "Variety Store"
 msgstr "Variety Store"
 
@@ -22606,6 +22624,9 @@ msgstr "túi"
 msgid "Pet"
 msgstr "Pet"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "Giám đốc tang"
 
@@ -24584,9 +24605,6 @@ msgstr "Tìm và sửa chữa mà không có địa chỉ (có thời hạn) đ
 msgid "Address Edit"
 msgstr "Địa chỉ Edit"
 
-msgid "Searching"
-msgstr "Tìm kiếm"
-
 msgid "Guess values for "
 msgstr "giá trị Guess cho "
 
@@ -24888,9 +24906,6 @@ msgstr "Trước OSMI lỗi"
 msgid "Next OSMI bug"
 msgstr "Next OSMI lỗi"
 
-msgid "Osm Inspector Bugs"
-msgstr "OSM Inspector Bugs"
-
 msgid "OSM Inspector Bugs"
 msgstr "OSM Inspector Bugs"
 
@@ -25655,17 +25670,6 @@ msgid "Auto sourcing"
 msgstr "Tự động tìm nguồn cung ứng"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-"Plugin địa chính-fr sử dụng các phím tắt F11 key cho grabbing, \n"
-"Mà bây giờ được phân bổ cho chuyển đổi toàn màn hình. \n"
-"Chìa khóa grabbing mới là F10, nhưng bạn có thể thay đổi các phím \n"
-"Trong các thiết lập phím tắt nếu bạn muốn."
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -26346,6 +26350,82 @@ msgstr "lựa chọn Empty"
 msgid "Invalid reference or subject"
 msgstr "tham chiếu không hợp lệ hay chủ đề"
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "Địa chỉ"
 
@@ -27856,12 +27936,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -27877,6 +27963,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -30447,6 +30536,62 @@ msgstr ""
 msgid "Terrace"
 msgstr "Terrace"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "Không thể đặt một nút bên ngoài của thế giới."
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "Browse"
 
diff --git a/i18n/po/zh_CN.po b/i18n/po/zh_CN.po
index 11932c0..7e8d400 100644
--- a/i18n/po/zh_CN.po
+++ b/i18n/po/zh_CN.po
@@ -10,16 +10,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-09-09 08:38+0000\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-25 07:32+0000\n"
 "Last-Translator: mmyfl <Unknown>\n"
 "Language-Team: 汉语 <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:08+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:04+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: zh_CN\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1370,6 +1370,15 @@ msgid_plural ""
 "way also."
 msgstr[0] "节点上不只有一个路径。请同时选定您想切割的路径。"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id:{0}]"
+
+msgid "Segment {0}: {1}"
+msgstr "区段 {0}:{1}"
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "您必须选择两个以上的节点来切割一个环状路径。"
 
@@ -2082,16 +2091,10 @@ msgid ""
 "delete."
 msgstr "单击以移动高亮的节点。按住 Ctrl 键以添加新节点,或按住 Alt 键以删除。"
 
-msgid "Cannot place a node outside of the world."
-msgstr "不能在世界之外放置节点。"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] "添加一个新节点到 {0} 条路径"
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "无法删除被多个对象参照的节点"
-
 msgid "Cannot delete node that has tags"
 msgstr "无法删除有标签的节点"
 
@@ -2332,13 +2335,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "也查找不完整和已删除的对象。"
 
 msgid "standard"
-msgstr ""
+msgstr "标准"
 
 msgid "regular expression"
 msgstr "正则表达式"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "MapCSS 选择器"
 
 msgid "add toolbar button"
 msgstr "添加工具栏按钮"
@@ -2509,6 +2512,12 @@ msgstr "所有匹配表达式的子对象"
 msgid "all parents of objects matching the expression"
 msgstr "所有匹配表达式的父对象"
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr "关系的第 n 个成员和/或路径的第 n 个节点"
 
@@ -2530,6 +2539,13 @@ msgstr "在已下载区域的对象"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr "在已下载区域的对象(和其所有的路径节点/关系成员)"
 
+msgid "Searching"
+msgstr "搜索中"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] "在 {0} 个对象中搜索"
+
 msgid "No match found for ''{0}''"
 msgstr "找不到“{0}”的符合项"
 
@@ -2559,7 +2575,7 @@ msgstr "正则表达式搜索"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -2611,7 +2627,7 @@ msgid "Unexpected token. Expected {0}, found {1}"
 msgstr "意外的令牌。预期 {0},发现 {1}"
 
 msgid "Failed to parse MapCSS selector"
-msgstr ""
+msgstr "解析 MapCSS 选择器失败"
 
 msgid "Unexpected token: {0}"
 msgstr "意外的令牌:{0}"
@@ -3204,13 +3220,13 @@ msgid "Select WMTS layer"
 msgstr "选择 WMTS 图层"
 
 msgid "Layer name"
-msgstr ""
+msgstr "图层名称"
 
 msgid "Projection"
 msgstr "投影法"
 
 msgid "Matrix set identifier"
-msgstr ""
+msgstr "矩阵集标识符"
 
 msgid "No layers defined by getCapabilities document: {0}"
 msgstr "getCapabilities 文档未定义图层:{0}"
@@ -3221,7 +3237,7 @@ msgstr "未选择图层"
 msgid ""
 "Only square tiles are supported. {0}x{1} returned by server for TileMatrix "
 "identifier {2}"
-msgstr ""
+msgstr "仅支持方形瓦片。服务器对 TileMatrix 标识符 {2} 返回了 {0}x{1}。"
 
 msgid "ID > 0 expected. Got {0}."
 msgstr "期望 ID > 0。收到 {0}。"
@@ -4077,10 +4093,10 @@ msgid "Property values contain HTML entity"
 msgstr "属性数值含有 HTML 标记"
 
 msgid "Key ''{0}'' looks like ''{1}''."
-msgstr ""
+msgstr "键“{0}”类似“{1}”。"
 
 msgid "Misspelled property key"
-msgstr ""
+msgstr "拼写错误的属性键"
 
 msgid "Key ''{0}'' not in presets."
 msgstr "键“{0}”不在预设组合中。"
@@ -4358,9 +4374,6 @@ msgstr "不要再显示(此会话)"
 msgid "Do not show again (remembers choice)"
 msgstr "不要再显示(记住选择)"
 
-msgid " [id: {0}]"
-msgstr " [id:{0}]"
-
 msgid "incomplete"
 msgstr "不完整"
 
@@ -4764,7 +4777,7 @@ msgstr "搜索菜单项"
 
 msgctxt "menu"
 msgid "Audio"
-msgstr ""
+msgstr "音频(U)"
 
 msgid "Do not hide toolbar"
 msgstr "不要隐藏工具栏"
@@ -7876,9 +7889,6 @@ msgstr "关系 {0}"
 msgid "Object"
 msgstr "对象"
 
-msgid "not present"
-msgstr "不存在"
-
 msgid "Changeset comment"
 msgstr "修改集注释"
 
@@ -8788,6 +8798,9 @@ msgstr "像素缩放等级:{0}"
 msgid "Best zoom: {0}"
 msgstr "最佳缩放等级:{0}"
 
+msgid "Estimated cache size: {0}"
+msgstr "预计缓存大小:{0}"
+
 msgid "Cache stats: {0}"
 msgstr "缓存状态:{0}"
 
@@ -8883,6 +8896,13 @@ msgstr "上一个标记"
 msgid "Jump to previous marker"
 msgstr "跳至前一个标记"
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr "支持所有的投影法"
 
@@ -10828,13 +10848,13 @@ msgid "2. Enter name for this layer"
 msgstr "2. 输入图层名称"
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "已缓存 {0},总缓存大小:{1} 字节"
 
 msgid "Cache name"
-msgstr ""
+msgstr "缓存名称"
 
 msgid "Object Count"
-msgstr ""
+msgstr "对象计数"
 
 msgid "imagery fade"
 msgstr "淡化图像"
@@ -10860,9 +10880,6 @@ msgstr "瓦片缓存目录: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr "最大磁盘缓存大小(每图像,MB): "
 
-msgid "Maximum number of objects in memory cache: "
-msgstr "最大内存缓存对象数量: "
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11947,64 +11964,6 @@ msgstr "更改标签"
 msgid "Add or remove toolbar button"
 msgstr "添加/移除工具条按钮"
 
-msgid "Unknown requisite: {0}"
-msgstr "不明的必需品:{0}"
-
-msgid "Illegal member expression: {0}"
-msgstr "非法成员表达式:{0}"
-
-msgid "More information about this feature"
-msgstr "关于这个功能的更多信息"
-
-msgid "Available roles"
-msgstr "可用的角色"
-
-msgid "role"
-msgstr "角色"
-
-msgid "count"
-msgstr "计次"
-
-msgid "elements"
-msgstr "元素"
-
-msgid "Optional Attributes:"
-msgstr "额外属性:"
-
-msgid "Select auto-increment of {0} for this field"
-msgstr "选择此栏自增{0}"
-
-msgid "Cancel auto-increment for this field"
-msgstr "取消此项自增"
-
-msgid "{0}:"
-msgstr "{0}:"
-
-msgid ""
-"Warning in tagging preset \"{0}-{1}\": Ignoring ''{2}'' attribute as ''{3}'' "
-"elements are given."
-msgstr "标签预设组合\"{0}-{1}\"警告: 忽略\"{2}\"属性,因为给定了\"{3}\"个元素。"
-
-msgid ""
-"Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is "
-"not \"{2}\""
-msgstr "损坏的标签预设组合\"{0}-{1}\" - \"values_from\"中给出的Java方法不是\"{2}\""
-
-msgid ""
-"Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' "
-"threw {2} ({3})"
-msgstr "损坏的标签预设组合\"{0}-{1}\" - \"values_from\"中给出的Java方法抛出{2}({3})"
-
-msgid ""
-"Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' "
-"must be the same as in ''values''"
-msgstr "预设标签“{0}-{1}”损坏 - 在“display_values”中的项目数量必须与“values”中的相同"
-
-msgid ""
-"Broken tagging preset \"{0}-{1}\" - number of items in "
-"''short_descriptions'' must be the same as in ''values''"
-msgstr "预设标签“{0}-{1}”损坏 - 在“short_descriptions”中的项目数量必须与“values”中的相同"
-
 msgid "Unknown type: {0}"
 msgstr "未知类型:{0}"
 
@@ -12053,6 +12012,64 @@ msgstr "搜索关键字"
 msgid "Add toolbar button"
 msgstr "添加工具栏按钮"
 
+msgid "{0}:"
+msgstr "{0}:"
+
+msgid ""
+"Warning in tagging preset \"{0}-{1}\": Ignoring ''{2}'' attribute as ''{3}'' "
+"elements are given."
+msgstr "标签预设组合\"{0}-{1}\"警告: 忽略\"{2}\"属性,因为给定了\"{3}\"个元素。"
+
+msgid ""
+"Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is "
+"not \"{2}\""
+msgstr "损坏的标签预设组合\"{0}-{1}\" - \"values_from\"中给出的Java方法不是\"{2}\""
+
+msgid ""
+"Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' "
+"threw {2} ({3})"
+msgstr "损坏的标签预设组合\"{0}-{1}\" - \"values_from\"中给出的Java方法抛出{2}({3})"
+
+msgid ""
+"Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' "
+"must be the same as in ''values''"
+msgstr "预设标签“{0}-{1}”损坏 - 在“display_values”中的项目数量必须与“values”中的相同"
+
+msgid ""
+"Broken tagging preset \"{0}-{1}\" - number of items in "
+"''short_descriptions'' must be the same as in ''values''"
+msgstr "预设标签“{0}-{1}”损坏 - 在“short_descriptions”中的项目数量必须与“values”中的相同"
+
+msgid "More information about this feature"
+msgstr "关于这个功能的更多信息"
+
+msgid "Optional Attributes:"
+msgstr "额外属性:"
+
+msgid "Unknown requisite: {0}"
+msgstr "不明的必需品:{0}"
+
+msgid "Illegal member expression: {0}"
+msgstr "非法成员表达式:{0}"
+
+msgid "Available roles"
+msgstr "可用的角色"
+
+msgid "role"
+msgstr "角色"
+
+msgid "count"
+msgstr "计次"
+
+msgid "elements"
+msgstr "元素"
+
+msgid "Select auto-increment of {0} for this field"
+msgstr "选择此栏自增{0}"
+
+msgid "Cancel auto-increment for this field"
+msgstr "取消此项自增"
+
 msgid ""
 "Adjustable {0} not registered yet. Cannot set participation in synchronized "
 "adjustment."
@@ -12398,10 +12415,6 @@ msgstr "消息通知"
 msgid "{0} not available (offline mode)"
 msgstr "{0} 暂时不可用(离线模式)"
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr "在本地数据集合中没有 id {0} 的原型。不能推断原型的类型。"
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "正在从“{0}”取回节点包"
 
@@ -14566,6 +14579,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14858,6 +14874,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -15044,12 +15063,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15304,6 +15329,16 @@ msgid ""
 msgstr "将选定的两条路径区段形成平行线,以选定的中心轴来旋转它们。"
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15337,14 +15372,12 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "提供命令行让您创建自己的命令。请查阅链接以了解标准命令(arc、circle 等)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
-msgstr "提供通用图像库。注定不会被用户直接安装,而是依赖于其他插件。这并不意味着要由用户直接安装,而是作为其他插件的一个依赖。"
-
 msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr "(警告:实验性!)用于冲突(合并)数据的工具。"
 
+msgid "Downloads new data when you pan/zoom"
+msgstr ""
+
 msgid "Create a grid of ways."
 msgstr "建立路径的格线。"
 
@@ -15649,6 +15682,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "让连栋房屋能超出单一区块。"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr "为单按钮鼠标(手写笔)提供帮助的按钮。按住 T 并用鼠标左键拖动地图激活"
@@ -15964,59 +16002,9 @@ msgstr "经营者"
 msgid "Service Times"
 msgstr "服务时间"
 
-msgid "18:00"
-msgstr "18:00"
-
-msgid "sunset,sunrise"
-msgstr "日落,日出"
-
-msgid "Su 09:30,11:00"
-msgstr "周日 09:30,11:00"
-
-msgid "Sa,Su,PH 09:00"
-msgstr "周六,周日,节假日 09:00"
-
-msgid "Sa 18:00; Su 10:45"
-msgstr "周六 18:00;周日 10:45"
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr "周五 08:00-18:00;四月10-15日休息;六月 07:00-20:00;八月休息;十二月24日 08:00-24:00"
-
-msgid "Sa 10:00+"
-msgstr "周六 10:00+"
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr "1-53 每 2 周周五 09:00-12:00;2-52 每 2 周周三 09:00-12:00"
-
 msgid "Opening Hours"
 msgstr "开放时间"
 
-msgid "24/7"
-msgstr "7*24 小时"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr "08:30-12:30,15:30-20:00"
-
-msgid "Sa-Su 00:00-24:00"
-msgstr "周六-周日 00:00-24:00"
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr "周一-周五 08:30-20:00;周六,周日 08:00-15:00;节假日休息"
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr "周一-周五 08:30-20:00;周二-周日 08:00-15:00;周六 08:00-12:00"
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr "周一-周日 08:00-18:00;四月10-15日休息;六月 08:00-14:00;八月休息;十二月25日休息"
-
-msgid "sunrise-sunset"
-msgstr "日出-日落"
-
-msgid "Su 10:00+"
-msgstr "周日 10:00+"
-
 msgid "Wheelchairs"
 msgstr "轮椅"
 
@@ -18503,6 +18491,33 @@ msgstr "招待所"
 msgid "Alpine Hut"
 msgstr "高山小屋"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr "访问权限"
+
+msgid "Shower"
+msgstr "淋浴"
+
+msgid "seasonal"
+msgstr "时令"
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr "贴切描述"
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18614,12 +18629,6 @@ msgstr "啤酒花园"
 msgid "Bar"
 msgstr "酒吧"
 
-msgid "Night Club"
-msgstr "夜店"
-
-msgid "Strip Club"
-msgstr "脱衣舞酒吧"
-
 msgid "Tourism"
 msgstr "旅游"
 
@@ -18671,9 +18680,6 @@ msgstr "城市"
 msgid "region"
 msgstr "地区"
 
-msgid "Closer Description"
-msgstr "贴切描述"
-
 msgid "Routes shown for:"
 msgstr "显示的线路为了:"
 
@@ -18795,12 +18801,6 @@ msgstr "桑拿"
 msgid "Horse Riding"
 msgstr "马场"
 
-msgid "Casino"
-msgstr "赌场"
-
-msgid "Brothel"
-msgstr "妓院"
-
 msgid "Playground"
 msgstr "运动场"
 
@@ -18832,6 +18832,18 @@ msgstr "钓鱼"
 msgid "Private Swimming Pool"
 msgstr "私人游泳池"
 
+msgid "Night Club"
+msgstr "夜店"
+
+msgid "Casino"
+msgstr "赌场"
+
+msgid "Strip Club"
+msgstr "脱衣舞酒吧"
+
+msgid "Brothel"
+msgstr "妓院"
+
 msgid "Culture"
 msgstr "文化"
 
@@ -19139,11 +19151,17 @@ msgstr "兽医"
 msgid "Toilets/Restrooms"
 msgstr "厕所/洗手间"
 
-msgid "Access rights"
-msgstr "访问权限"
+msgctxt "restroom"
+msgid "Female"
+msgstr ""
 
-msgid "seasonal"
-msgstr "时令"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
+msgstr ""
 
 msgid "flush"
 msgstr ""
@@ -19172,24 +19190,12 @@ msgstr "蹲式"
 msgid "urinal"
 msgstr "小便器"
 
-msgid "Shower"
-msgstr "淋浴"
-
 msgid "Post Box"
 msgstr "邮筒"
 
 msgid "Collection times"
 msgstr "收集时间"
 
-msgid "Mo-Sa 09:00"
-msgstr "周一-周六 09:00"
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr "周一-周五 17:30; 周六 12:00"
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr "周一-周五 15:00,19:00; 周六 15:10; 周日 10:30"
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19483,6 +19489,24 @@ msgstr "吸"
 msgid "Count"
 msgstr "数目"
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr "广告栏"
 
@@ -20170,9 +20194,6 @@ msgstr "灯塔"
 msgid "Street Lamp"
 msgstr "路灯"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "周一-周五 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr "监测站"
 
@@ -21308,11 +21329,8 @@ msgstr "报摊"
 msgid "Ticket"
 msgstr "车票"
 
-msgid "Department Store"
-msgstr "百货商店"
-
-msgid "Mall"
-msgstr "购物中心"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr "化妆品店"
@@ -21338,12 +21356,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr "珠宝"
 
-msgid "Gift/Souvenir"
-msgstr "礼品/纪念品"
-
 msgid "Erotic"
 msgstr "情色"
 
+msgid "Department Store"
+msgstr "百货商店"
+
+msgid "Mall"
+msgstr "购物中心"
+
 msgid "Florist"
 msgstr "花类"
 
@@ -21368,6 +21389,9 @@ msgstr "乐器"
 msgid "Toys"
 msgstr "玩具"
 
+msgid "Gift/Souvenir"
+msgstr "礼品/纪念品"
+
 msgid "Variety Store"
 msgstr "杂货店"
 
@@ -21383,6 +21407,9 @@ msgstr ""
 msgid "Pet"
 msgstr "宠物"
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr "殡仪"
 
@@ -23306,9 +23333,6 @@ msgstr "查找和修正没有(有效)街道的地址"
 msgid "Address Edit"
 msgstr "地址编辑"
 
-msgid "Searching"
-msgstr "搜索中"
-
 msgid "Guess values for "
 msgstr "猜测数值: "
 
@@ -23603,9 +23627,6 @@ msgstr "前一 OSMI 错误"
 msgid "Next OSMI bug"
 msgstr "后一 OSMI 错误"
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -24342,13 +24363,6 @@ msgid "Auto sourcing"
 msgstr "自动来源"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24994,6 +25008,82 @@ msgstr "空选择范围"
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr "地址"
 
@@ -26444,12 +26534,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26465,6 +26561,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28923,6 +29022,62 @@ msgstr "请选择单一、封闭、最少四个节点的路径。(或者您可
 msgid "Terrace"
 msgstr "连栋建筑"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "不能在世界之外放置节点。"
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "浏览"
 
diff --git a/i18n/po/zh_TW.po b/i18n/po/zh_TW.po
index ec23f89..b9caaf3 100644
--- a/i18n/po/zh_TW.po
+++ b/i18n/po/zh_TW.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-10-10 03:37+0200\n"
-"PO-Revision-Date: 2015-05-12 22:54+0000\n"
-"Last-Translator: Supaplex <Unknown>\n"
+"POT-Creation-Date: 2015-10-30 03:36+0100\n"
+"PO-Revision-Date: 2015-10-26 10:58+0000\n"
+"Last-Translator: Sin-di Lee <Unknown>\n"
 "Language-Team: Traditional Chinese\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2015-10-10 05:08+0000\n"
-"X-Generator: Launchpad (build 17802)\n"
+"X-Launchpad-Export-Date: 2015-10-30 05:04+0000\n"
+"X-Generator: Launchpad (build 17838)\n"
 "Language: zh_TW\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -1363,6 +1363,15 @@ msgid_plural ""
 "way also."
 msgstr[0] "節點上不只有兩個路徑。請同時選取你想切割的路徑。"
 
+msgid "Which way segment should reuse the history of {0}?"
+msgstr ""
+
+msgid " [id: {0}]"
+msgstr " [id: {0}]"
+
+msgid "Segment {0}: {1}"
+msgstr ""
+
 msgid "You must select two or more nodes to split a circular way."
 msgstr "你必須選擇兩個以上的節點來切割一個環狀路徑"
 
@@ -2078,17 +2087,11 @@ msgid ""
 "delete."
 msgstr "點選可移動強調的節點。按住 Ctrl 會加入新節點,或按 Alt 則可以刪除。"
 
-msgid "Cannot place a node outside of the world."
-msgstr "不能在世界範圍以外放置節點。"
-
 msgid "Add a new node to way"
 msgid_plural "Add a new node to {0} ways"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Cannot delete node that is referenced by multiple objects"
-msgstr "不能刪除由多個物件參照的節點"
-
 msgid "Cannot delete node that has tags"
 msgstr "不能刪除有標籤的節點"
 
@@ -2503,6 +2506,12 @@ msgstr ""
 msgid "all parents of objects matching the expression"
 msgstr ""
 
+msgid "relation containing a member of role <i>stop</i>"
+msgstr ""
+
+msgid "objects being part of a relation as role <i>stop</i>"
+msgstr ""
+
 msgid "n-th member of relation and/or n-th node of way"
 msgstr ""
 
@@ -2524,6 +2533,14 @@ msgstr "已下載區域中的物件"
 msgid "objects (and all its way nodes / relation members) in downloaded area"
 msgstr ""
 
+msgid "Searching"
+msgstr "正在搜尋"
+
+msgid "Searching in {0} object"
+msgid_plural "Searching in {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "No match found for ''{0}''"
 msgstr "找不到「{0}」的符合項"
 
@@ -4356,9 +4373,6 @@ msgstr ""
 msgid "Do not show again (remembers choice)"
 msgstr "不要再顯示(記住選擇)"
 
-msgid " [id: {0}]"
-msgstr " [id: {0}]"
-
 msgid "incomplete"
 msgstr "不完整"
 
@@ -7848,9 +7862,6 @@ msgstr "關係 {0}"
 msgid "Object"
 msgstr "物件"
 
-msgid "not present"
-msgstr "未顯現"
-
 msgid "Changeset comment"
 msgstr ""
 
@@ -8757,6 +8768,9 @@ msgstr ""
 msgid "Best zoom: {0}"
 msgstr ""
 
+msgid "Estimated cache size: {0}"
+msgstr ""
+
 msgid "Cache stats: {0}"
 msgstr ""
 
@@ -8852,6 +8866,13 @@ msgstr ""
 msgid "Jump to previous marker"
 msgstr ""
 
+msgid ""
+"To add another layer you need to allocate at least {0,number,#}MB memory to "
+"JOSM using -Xmx{0,number,#}M option (see "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Currently you have {1,number,#}MB memory allocated for JOSM"
+msgstr ""
+
 msgid "All projections are supported"
 msgstr ""
 
@@ -10813,9 +10834,6 @@ msgstr "拼貼快取目錄: "
 msgid "Maximum size of disk cache (per imagery) in MB: "
 msgstr ""
 
-msgid "Maximum number of objects in memory cache: "
-msgstr ""
-
 msgid "Tiles zoom offset:"
 msgstr ""
 
@@ -11899,34 +11917,52 @@ msgstr ""
 msgid "Add or remove toolbar button"
 msgstr ""
 
-msgid "Unknown requisite: {0}"
-msgstr "不明的必需品:{0}"
+msgid "Unknown type: {0}"
+msgstr "不明的類型:{0}"
 
-msgid "Illegal member expression: {0}"
+msgid "Preset group {1} / {0}"
+msgstr "預設組合 {1} / {0}"
+
+msgid "Preset group {0}"
+msgstr "預設組合 {0}"
+
+msgid "Reference {0} is being used before it was defined"
 msgstr ""
 
-msgid "More information about this feature"
-msgstr "更多關於這個功能的資訊"
+msgid "Roles cannot appear more than once"
+msgstr ""
 
-msgid "Available roles"
-msgstr "可用的角色"
+msgid "Preset role element without parent"
+msgstr "沒有父項的預設組合角色元素"
 
-msgid "role"
-msgstr "角色"
+msgid "Preset sub element without parent"
+msgstr "沒有父項的子元素"
 
-msgid "count"
-msgstr "計次"
+msgid "Error parsing {0}: "
+msgstr "分析 {0} 時發生錯誤: "
 
-msgid "elements"
-msgstr "元素"
+msgid "Search preset"
+msgstr "搜尋預設組合"
 
-msgid "Optional Attributes:"
-msgstr "額外屬性:"
+msgid "Show preset search dialog"
+msgstr "顯示預設組合對話盒"
 
-msgid "Select auto-increment of {0} for this field"
-msgstr ""
+msgid "Search presets"
+msgstr "搜尋預設組合"
 
-msgid "Cancel auto-increment for this field"
+msgid "Presets"
+msgstr "預設組合"
+
+msgid "Search for objects by preset"
+msgstr "依預設組合搜尋物件"
+
+msgid "Show only applicable to selection"
+msgstr "只顯示適合選擇區域"
+
+msgid "Search in tags"
+msgstr "搜尋標籤"
+
+msgid "Add toolbar button"
 msgstr ""
 
 msgid "{0}:"
@@ -11959,52 +11995,34 @@ msgid ""
 msgstr ""
 "損壞的標籤預先設定 \"{0}-{1}\" - 在 ''short_descriptions'' 中的項目數量必須與 ''values'' 中的相同"
 
-msgid "Unknown type: {0}"
-msgstr "不明的類型:{0}"
-
-msgid "Preset group {1} / {0}"
-msgstr "預設組合 {1} / {0}"
+msgid "More information about this feature"
+msgstr "更多關於這個功能的資訊"
 
-msgid "Preset group {0}"
-msgstr "預設組合 {0}"
+msgid "Optional Attributes:"
+msgstr "額外屬性:"
 
-msgid "Reference {0} is being used before it was defined"
-msgstr ""
+msgid "Unknown requisite: {0}"
+msgstr "不明的必需品:{0}"
 
-msgid "Roles cannot appear more than once"
+msgid "Illegal member expression: {0}"
 msgstr ""
 
-msgid "Preset role element without parent"
-msgstr "沒有父項的預設組合角色元素"
-
-msgid "Preset sub element without parent"
-msgstr "沒有父項的子元素"
-
-msgid "Error parsing {0}: "
-msgstr "分析 {0} 時發生錯誤: "
-
-msgid "Search preset"
-msgstr "搜尋預設組合"
-
-msgid "Show preset search dialog"
-msgstr "顯示預設組合對話盒"
-
-msgid "Search presets"
-msgstr "搜尋預設組合"
+msgid "Available roles"
+msgstr "可用的角色"
 
-msgid "Presets"
-msgstr "預設組合"
+msgid "role"
+msgstr "角色"
 
-msgid "Search for objects by preset"
-msgstr "依預設組合搜尋物件"
+msgid "count"
+msgstr "計次"
 
-msgid "Show only applicable to selection"
-msgstr "只顯示適合選擇區域"
+msgid "elements"
+msgstr "元素"
 
-msgid "Search in tags"
-msgstr "搜尋標籤"
+msgid "Select auto-increment of {0} for this field"
+msgstr ""
 
-msgid "Add toolbar button"
+msgid "Cancel auto-increment for this field"
 msgstr ""
 
 msgid ""
@@ -12353,10 +12371,6 @@ msgstr ""
 msgid "{0} not available (offline mode)"
 msgstr ""
 
-msgid ""
-"No primitive with id {0} in local dataset. Cannot infer primitive type."
-msgstr "在本地端資料組合中沒有 id {0} 的原型。不能推斷原型的類型。"
-
 msgid "Fetching a package of nodes from ''{0}''"
 msgstr "正在從「{0}」取回節點包"
 
@@ -14514,6 +14528,9 @@ msgstr ""
 msgid "Tours - Orthophotos 2013"
 msgstr ""
 
+msgid "Tours - Orthophotos 2008-2010"
+msgstr ""
+
 msgid ""
 "Vercors - Réserve naturelle des Hauts-Plateaux du Vercors - Orthophotos 1999 "
 "- 1 m"
@@ -14806,6 +14823,9 @@ msgstr ""
 msgid "trail.pl: Szlaki (paths)"
 msgstr ""
 
+msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
+msgstr ""
+
 msgid "ScanEx IRS"
 msgstr ""
 
@@ -14992,12 +15012,18 @@ msgstr ""
 msgid "NLS - OS 6-inch Scotland 1842-82"
 msgstr ""
 
+msgid "NLS - OS 6-inch County Series 1888-1913"
+msgstr ""
+
 msgid "NLS - OS 1:25k 1st Series 1937-61"
 msgstr ""
 
 msgid "NLS - OS 1-inch 7th Series 1955-61"
 msgstr ""
 
+msgid "NLS - OS 25-inch (Scotland) 1892-1905"
+msgstr ""
+
 msgid "OS 1:25k historic (OSM-Best)"
 msgstr ""
 
@@ -15252,6 +15278,16 @@ msgid ""
 msgstr "將選取的兩條路徑區段形成平行線,以選取的中心軸來旋轉它們。"
 
 msgid ""
+"Provides Apache Commons library components. Not meant to be installed "
+"directly by users, but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
+"Provides Apache HTTP library. Not meant to be installed directly by users, "
+"but rather as a dependency for other plugins."
+msgstr ""
+
+msgid ""
 "Allows selection of areas in an layer and automatic creation of a way as "
 "polygon. Built to ease mapping of building from background layers. Optimized "
 "for basemap.at."
@@ -15285,12 +15321,10 @@ msgid ""
 "standard commands (arc, circle etc.)"
 msgstr "實作一個命令列讓您建立自己的指令。請查閱連結以了解標準指令 (arc, circle 等.)"
 
-msgid ""
-"Provides Commons Imaging library. Not meant to be installed directly by "
-"users, but rather as a dependency for other plugins."
+msgid "(Warning: Experimental!) Tool for conflating (merging) data."
 msgstr ""
 
-msgid "(Warning: Experimental!) Tool for conflating (merging) data."
+msgid "Downloads new data when you pan/zoom"
 msgstr ""
 
 msgid "Create a grid of ways."
@@ -15599,6 +15633,11 @@ msgid "Make terraced houses out of single blocks."
 msgstr "讓連棟房屋能超出單一區塊。"
 
 msgid ""
+"Integrate to-fix http://osmlab.github.io/to-fix/ into JOSM to repair errors "
+"in OpenStreetMap"
+msgstr ""
+
+msgid ""
 "Provides helper buttons to allow working with single button mouse (stylus). "
 "Activate by holding T and slip map with left mouse button"
 msgstr ""
@@ -15914,59 +15953,9 @@ msgstr "經營者"
 msgid "Service Times"
 msgstr ""
 
-msgid "18:00"
-msgstr ""
-
-msgid "sunset,sunrise"
-msgstr ""
-
-msgid "Su 09:30,11:00"
-msgstr ""
-
-msgid "Sa,Su,PH 09:00"
-msgstr ""
-
-msgid "Sa 18:00; Su 10:45"
-msgstr ""
-
-msgid ""
-"Fr 08:00-18:00; Apr 10-15 off; Jun 07:00-20:00; Aug off; Dec 24 08:00-24:00"
-msgstr ""
-
-msgid "Sa 10:00+"
-msgstr ""
-
-msgid "week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00"
-msgstr ""
-
 msgid "Opening Hours"
 msgstr "開放時間"
 
-msgid "24/7"
-msgstr "24/7"
-
-msgid "08:30-12:30,15:30-20:00"
-msgstr ""
-
-msgid "Sa-Su 00:00-24:00"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00; Sa,Su 08:00-15:00; PH off"
-msgstr ""
-
-msgid "Mo-Fr 08:30-20:00, Tu-Su 08:00-15:00; Sa 08:00-12:00"
-msgstr ""
-
-msgid ""
-"Mo-Su 08:00-18:00; Apr 10-15 off; Jun 08:00-14:00; Aug off; Dec 25 off"
-msgstr ""
-
-msgid "sunrise-sunset"
-msgstr ""
-
-msgid "Su 10:00+"
-msgstr ""
-
 msgid "Wheelchairs"
 msgstr "輪椅"
 
@@ -18453,6 +18442,33 @@ msgstr "招待所"
 msgid "Alpine Hut"
 msgstr "高山小屋"
 
+msgid "Wilderness Hut"
+msgstr ""
+
+msgid "Access rights"
+msgstr ""
+
+msgid "Shower"
+msgstr ""
+
+msgid "seasonal"
+msgstr ""
+
+msgid "Reservation"
+msgstr ""
+
+msgid "required"
+msgstr ""
+
+msgid "recommended"
+msgstr ""
+
+msgid "members_only"
+msgstr ""
+
+msgid "Closer Description"
+msgstr ""
+
 msgid "Caravan Site/RV Park"
 msgstr ""
 
@@ -18564,12 +18580,6 @@ msgstr ""
 msgid "Bar"
 msgstr "酒吧"
 
-msgid "Night Club"
-msgstr "夜店"
-
-msgid "Strip Club"
-msgstr "脫衣酒吧"
-
 msgid "Tourism"
 msgstr "旅遊相關"
 
@@ -18621,9 +18631,6 @@ msgstr "城市"
 msgid "region"
 msgstr "區"
 
-msgid "Closer Description"
-msgstr ""
-
 msgid "Routes shown for:"
 msgstr "路線顯示:"
 
@@ -18745,12 +18752,6 @@ msgstr "三溫暖"
 msgid "Horse Riding"
 msgstr ""
 
-msgid "Casino"
-msgstr ""
-
-msgid "Brothel"
-msgstr "妓院"
-
 msgid "Playground"
 msgstr "運動場"
 
@@ -18782,6 +18783,18 @@ msgstr "釣魚"
 msgid "Private Swimming Pool"
 msgstr "私人游泳池"
 
+msgid "Night Club"
+msgstr "夜店"
+
+msgid "Casino"
+msgstr ""
+
+msgid "Strip Club"
+msgstr "脫衣酒吧"
+
+msgid "Brothel"
+msgstr "妓院"
+
 msgid "Culture"
 msgstr "文化"
 
@@ -19089,10 +19102,16 @@ msgstr "獸醫"
 msgid "Toilets/Restrooms"
 msgstr ""
 
-msgid "Access rights"
+msgctxt "restroom"
+msgid "Female"
 msgstr ""
 
-msgid "seasonal"
+msgctxt "restroom"
+msgid "Male"
+msgstr ""
+
+msgctxt "restroom"
+msgid "Unisex"
 msgstr ""
 
 msgid "flush"
@@ -19122,24 +19141,12 @@ msgstr ""
 msgid "urinal"
 msgstr ""
 
-msgid "Shower"
-msgstr ""
-
 msgid "Post Box"
 msgstr "郵筒"
 
 msgid "Collection times"
 msgstr ""
 
-msgid "Mo-Sa 09:00"
-msgstr ""
-
-msgid "Mo-Fr 17:30; Sa 12:00"
-msgstr ""
-
-msgid "Mo-Fr 15:00,19:00; Sa 15:10; Su 10:30"
-msgstr ""
-
 msgctxt "post_box"
 msgid "pillar"
 msgstr ""
@@ -19433,6 +19440,24 @@ msgstr ""
 msgid "Count"
 msgstr ""
 
+msgid "Compressed Air"
+msgstr ""
+
+msgid "Valves"
+msgstr ""
+
+msgid "Dunlop (Woods)"
+msgstr ""
+
+msgid "Schrader"
+msgstr ""
+
+msgid "Sclaverand (Presta)"
+msgstr ""
+
+msgid "Regina"
+msgstr ""
+
 msgid "Advertising Column"
 msgstr ""
 
@@ -20120,9 +20145,6 @@ msgstr "燈塔"
 msgid "Street Lamp"
 msgstr "路燈"
 
-msgid "Mo-Fr 22:00-05:00"
-msgstr "週一-週五 22:00-05:00"
-
 msgid "Monitoring Station"
 msgstr ""
 
@@ -21258,11 +21280,8 @@ msgstr ""
 msgid "Ticket"
 msgstr ""
 
-msgid "Department Store"
-msgstr "百貨公司"
-
-msgid "Mall"
-msgstr "購物中心"
+msgid "For the body"
+msgstr ""
 
 msgid "Chemist"
 msgstr ""
@@ -21288,12 +21307,15 @@ msgstr ""
 msgid "Jewellery"
 msgstr ""
 
-msgid "Gift/Souvenir"
-msgstr ""
-
 msgid "Erotic"
 msgstr "情趣用品"
 
+msgid "Department Store"
+msgstr "百貨公司"
+
+msgid "Mall"
+msgstr "購物中心"
+
 msgid "Florist"
 msgstr "花類"
 
@@ -21318,6 +21340,9 @@ msgstr "樂器"
 msgid "Toys"
 msgstr "玩具類"
 
+msgid "Gift/Souvenir"
+msgstr ""
+
 msgid "Variety Store"
 msgstr ""
 
@@ -21333,6 +21358,9 @@ msgstr ""
 msgid "Pet"
 msgstr ""
 
+msgid "Photo"
+msgstr ""
+
 msgid "Funeral Directors"
 msgstr ""
 
@@ -21919,7 +21947,7 @@ msgid "Quarry"
 msgstr "露天採礦"
 
 msgid "Annotation"
-msgstr "附註"
+msgstr "註記"
 
 msgid "Alternative name"
 msgstr ""
@@ -23249,9 +23277,6 @@ msgstr "尋找並修正沒有(有效的)街道的地址。"
 msgid "Address Edit"
 msgstr "地址編輯"
 
-msgid "Searching"
-msgstr "正在搜尋"
-
 msgid "Guess values for "
 msgstr "猜測數值: "
 
@@ -23544,9 +23569,6 @@ msgstr ""
 msgid "Next OSMI bug"
 msgstr ""
 
-msgid "Osm Inspector Bugs"
-msgstr ""
-
 msgid "OSM Inspector Bugs"
 msgstr ""
 
@@ -23557,7 +23579,7 @@ msgid "Handy Address Interpolation Functions"
 msgstr "便利住址填寫功能"
 
 msgid "Define Address Interpolation"
-msgstr "定義地址填寫"
+msgstr "定義內插法地址"
 
 msgid "Odd"
 msgstr "奇數"
@@ -24244,13 +24266,6 @@ msgid "Auto sourcing"
 msgstr "自動來源"
 
 msgid ""
-"Plugin cadastre-fr used the key shortcut F11 for grabbing,\n"
-"which is now allocated for full-screen switch.\n"
-"The new grabbing key is F10, but you can change the key\n"
-"in the shortcut settings if you want."
-msgstr ""
-
-msgid ""
 "Please enable at least two WMS layers in the cadastre-fr plugin "
 "configuration.\n"
 "Layers ''Building'' and ''Parcel'' added by default."
@@ -24896,6 +24911,82 @@ msgstr ""
 msgid "Invalid reference or subject"
 msgstr ""
 
+msgid "Download OSM data continuously"
+msgstr ""
+
+msgid "Download map data continuously when paning and zooming."
+msgstr ""
+
+msgid "Toggle the continuous download on/off"
+msgstr ""
+
+msgid "Download Settings"
+msgstr ""
+
+msgid "Settings for the continuous download."
+msgstr ""
+
+msgid "Activate continuous downloads at startup."
+msgstr ""
+
+msgid "Supress the default modal progress monitor when downloading."
+msgstr ""
+
+msgid ""
+"If this plugin is active at startup. This default state will not change when "
+"you are toggeling the plugin with the menu option."
+msgstr ""
+
+msgid ""
+"Maximum number of threads used for downloading, increasing this will cause "
+"the client to send more concurrint queries to the server. (Requires restart)"
+msgstr ""
+
+msgid "Max threads"
+msgstr ""
+
+msgid "Maximum number of boxes to download for each pan/zoom."
+msgstr ""
+
+msgid "Max download boxes"
+msgstr ""
+
+msgid ""
+"Time in milliseconds after a pan/zoom before it starts downloading. "
+"Additional changes in the viewport in the waiting time will reset the timer."
+msgstr ""
+
+msgid "Wait time (milliseconds)"
+msgstr ""
+
+msgid ""
+"How much extra area around the viewport is it going to download. Setting "
+"this to 0 will not download any extra data."
+msgstr ""
+
+msgid "Extra download area"
+msgstr ""
+
+msgid ""
+"Max area to download in degrees^2. Increasing this number will cause the "
+"plugin to download areas when you are zoomed far out."
+msgstr ""
+
+msgid "Max download area"
+msgstr ""
+
+msgid "The strategy for finding what areas to request from the server."
+msgstr ""
+
+msgid "Download strategy"
+msgstr ""
+
+msgid ""
+"If we should supress the progress monitor that is shown when downloading. If "
+"select this option there is no indication that something is being done, and "
+"no way to cancel the download."
+msgstr ""
+
 msgid "Address"
 msgstr ""
 
@@ -26341,12 +26432,18 @@ msgstr ""
 msgid "Days"
 msgstr ""
 
+msgid "Imported images"
+msgstr ""
+
 msgid "Mapillary filter"
 msgstr ""
 
 msgid "Open Mapillary filter dialog"
 msgstr ""
 
+msgid "Not older than: "
+msgstr ""
+
 msgid "Downloaded images"
 msgstr ""
 
@@ -26362,6 +26459,9 @@ msgstr ""
 msgid "Open Mapillary history dialog"
 msgstr ""
 
+msgid "Mapillary picture"
+msgstr ""
+
 msgid "Open Mapillary window"
 msgstr ""
 
@@ -28821,6 +28921,62 @@ msgstr "請選擇單一、封閉、最少四個節點的路徑。(或者您可
 msgid "Terrace"
 msgstr "連棟建築"
 
+msgid "To-fix"
+msgstr ""
+
+msgid "Open to-fix window."
+msgstr ""
+
+msgid "Tool:To-fix"
+msgstr ""
+
+msgid "Skip"
+msgstr ""
+
+msgid "Skip Error"
+msgstr ""
+
+msgid "Fixed"
+msgstr ""
+
+msgid "Fixed Error"
+msgstr ""
+
+msgid "Not an error"
+msgstr ""
+
+msgid "Set download area (m²)"
+msgstr ""
+
+msgid "~.02"
+msgstr ""
+
+msgid "tofix:Skip item"
+msgstr ""
+
+msgid "tofix:Fixed item"
+msgstr ""
+
+msgid "tofix:Not a Error item"
+msgstr ""
+
+msgid "Maintenance server"
+msgstr ""
+
+msgid ""
+"<html>Something went wrong, please update the plugin or report an issue at "
+"<a href=\"\">josm-tofix-plugin/issues</a></html>"
+msgstr ""
+
+msgid "Something went wrong, try again"
+msgstr ""
+
+msgid "Cannot place a node outside of the world."
+msgstr "不能在世界範圍以外放置節點。"
+
+msgid "Layer to draw OSM error"
+msgstr ""
+
 msgid "Browse"
 msgstr "瀏覽"
 
diff --git a/images/dialogs/relation/reverse.png b/images/dialogs/relation/reverse.png
new file mode 100644
index 0000000..e8fbb99
Binary files /dev/null and b/images/dialogs/relation/reverse.png differ
diff --git a/images/dialogs/relation/reverse.svg b/images/dialogs/relation/reverse.svg
deleted file mode 100644
index f6f9d64..0000000
--- a/images/dialogs/relation/reverse.svg
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2440"
-   sodipodi:version="0.32"
-   inkscape:version="0.47 r22583"
-   width="24"
-   height="24"
-   version="1.0"
-   sodipodi:docname="reverse.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/julius/development/eclipse/JOSM/core/images/dialogs/relation/reverse.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <metadata
-     id="metadata2445">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs2443">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleOutM"
-       style="overflow:visible">
-      <path
-         id="path3747"
-         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="scale(0.4,0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Mend"
-       style="overflow:visible;">
-      <path
-         id="path3628"
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Send"
-       style="overflow:visible;">
-      <path
-         id="path3616"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lend"
-       style="overflow:visible;">
-      <path
-         id="path3604"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2447" />
-    <inkscape:perspective
-       id="perspective4624"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-6"
-       style="overflow:visible">
-      <path
-         id="path3747-2"
-         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="scale(0.4,0.4)" />
-    </marker>
-    <inkscape:perspective
-       id="perspective4624-7"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-5"
-       style="overflow:visible">
-      <path
-         id="path3747-6"
-         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="scale(0.4,0.4)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-height="829"
-     inkscape:window-width="1002"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false"
-     inkscape:zoom="9.625"
-     inkscape:cx="10.21197"
-     inkscape:cy="8.5939798"
-     inkscape:window-x="181"
-     inkscape:window-y="103"
-     inkscape:current-layer="svg2440"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-maximized="0" />
-  <g
-     id="g4644"
-     transform="translate(-0.29360034,0.03053951)">
-    <rect
-       y="2.2295189"
-       x="8.7411594"
-       height="19.479883"
-       width="7.1048818"
-       id="rect2383"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#646464;stroke-width:0.80511302;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    <path
-       id="path3157"
-       d="m 8.6373517,4.2507105 6.7500003,-0.0625"
-       style="fill:none" />
-    <path
-       id="path3165"
-       d="m 9.0084402,6.2986855 6.4453228,0.042807"
-       style="fill:none;stroke:#646464;stroke-width:0.48521939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    <path
-       id="path3167"
-       d="m 9.1356537,11.034053 6.3238563,0.04255"
-       style="fill:none;stroke:#646464;stroke-width:0.47918671;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    <path
-       id="path3219"
-       d="m 9.1497318,16.612257 6.3034462,0.04267"
-       style="fill:none;stroke:#646464;stroke-width:0.47906977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-  </g>
-  <path
-     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1;marker-end:url(#TriangleOutM-5)"
-     d="M 6.432679,4.7957313 C 1.9095341,6.751938 0.68277921,14.986917 4.9081389,18.115426"
-     id="path3596"
-     sodipodi:nodetypes="cc"
-     inkscape:export-xdpi="90"
-     inkscape:export-ydpi="90" />
-  <path
-     style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
-     d="M 17.567321,19.204268 C 22.090466,17.248061 23.31722,9.0130834 19.091861,5.8845744"
-     id="path3596-9"
-     sodipodi:nodetypes="cc" />
-</svg>
diff --git a/images/dialogs/sort.png b/images/dialogs/sort.png
index 9fc9b12..2440115 100644
Binary files a/images/dialogs/sort.png and b/images/dialogs/sort.png differ
diff --git a/images/dialogs/sort_below.png b/images/dialogs/sort_below.png
index ac7742c..c48d510 100644
Binary files a/images/dialogs/sort_below.png and b/images/dialogs/sort_below.png differ
diff --git a/linux/latest/DEBIAN/control b/linux/latest/DEBIAN/control
index 53538ad..d0deb6f 100644
--- a/linux/latest/DEBIAN/control
+++ b/linux/latest/DEBIAN/control
@@ -5,7 +5,7 @@ Maintainer: josm developers <josm-dev at openstreetmap.org>
 Homepage: https://josm.openstreetmap.de
 Priority: extra
 Architecture: all
-Depends: openjdk-7-jre | openjdk-8-jre
+Depends: openjdk-7-jre | openjdk-8-jre | openjdk-9-jre
 Description: Editor for OpenStreetMap (daily development snapshot)
  JOSM is an editor for OpenStreetMap (OSM) written in Java.
   The current version supports stand alone GPX tracks, GPX track data
diff --git a/linux/latest/usr/share/applications/josm-latest.desktop b/linux/latest/usr/share/applications/josm-latest.desktop
index cb51dd9..95a983b 100644
--- a/linux/latest/usr/share/applications/josm-latest.desktop
+++ b/linux/latest/usr/share/applications/josm-latest.desktop
@@ -4,10 +4,11 @@ Version=1.0
 Name=JOSM (latest snapshot)
 GenericName=Java OpenStreetMap Editor (latest)
 Comment=Extensible off-line editor for OpenStreetMap (OSM)
-Icon=josm-latest.png
+Icon=josm-latest
 Exec=josm-latest %F
 Terminal=false
-MimeType=application/x-osm+xml;application/x-gpx+xml
+MimeType=application/x-osm+xml;application/x-gpx+xml;
 StartupNotify=true
-Categories=Education;Geoscience;Maps
+Categories=Education;Geoscience;Maps;
 StartupWMClass=org-openstreetmap-josm-Main
+Keywords=OpenStreetMap;OSM;
diff --git a/linux/latest/usr/share/icons/hicolor/16x16/apps/josm-latest.png b/linux/latest/usr/share/icons/hicolor/16x16/apps/josm-latest.png
new file mode 100644
index 0000000..475ce92
Binary files /dev/null and b/linux/latest/usr/share/icons/hicolor/16x16/apps/josm-latest.png differ
diff --git a/linux/latest/usr/share/icons/hicolor/32x32/apps/josm-latest.png b/linux/latest/usr/share/icons/hicolor/32x32/apps/josm-latest.png
new file mode 100644
index 0000000..ad68382
Binary files /dev/null and b/linux/latest/usr/share/icons/hicolor/32x32/apps/josm-latest.png differ
diff --git a/linux/latest/usr/share/icons/hicolor/48x48/apps/josm-latest.png b/linux/latest/usr/share/icons/hicolor/48x48/apps/josm-latest.png
new file mode 100644
index 0000000..de7fe89
Binary files /dev/null and b/linux/latest/usr/share/icons/hicolor/48x48/apps/josm-latest.png differ
diff --git a/linux/latest/usr/share/icons/hicolor/scalable/apps/josm-latest.svg b/linux/latest/usr/share/icons/hicolor/scalable/apps/josm-latest.svg
new file mode 100644
index 0000000..c021dc9
--- /dev/null
+++ b/linux/latest/usr/share/icons/hicolor/scalable/apps/josm-latest.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1000 1000"><defs>  <filter color-interpolation-filters="sRGB" id="A">    <feGaussianBlur stdDeviation=".5"/>  </filter>  <filter color-interpolation-filters="sRGB" id="3">    <feGaussianBlur stdDeviation="10"/>  </filter>  <filter x="-.033" y="-.309" width="1.066" height="1.618" color-interpolation-filters="sRGB" id="5">    <feGaussianBlur st [...]
\ No newline at end of file
diff --git a/linux/latest/usr/share/menu/josm-latest b/linux/latest/usr/share/menu/josm-latest
deleted file mode 100644
index 814f78f..0000000
--- a/linux/latest/usr/share/menu/josm-latest
+++ /dev/null
@@ -1,2 +0,0 @@
-?package(josm-latest): needs="X11" section="Applications/Science/Geoscience" title="JOSM (latest snapshot)" command="/usr/bin/josm-latest"\
-icon16x16="/usr/share/pixmaps/josm-latest-16.xpm" icon32x32="/usr/share/pixmaps/josm-latest-32.xpm"
diff --git a/linux/latest/usr/share/pixmaps/josm-latest-16.xpm b/linux/latest/usr/share/pixmaps/josm-latest-16.xpm
deleted file mode 100644
index 0e179ee..0000000
--- a/linux/latest/usr/share/pixmaps/josm-latest-16.xpm
+++ /dev/null
@@ -1,213 +0,0 @@
-/* XPM */
-static char * josm16DG2_xpm[] = {
-"16 16 194 2",
-"  	c None",
-". 	c #9B4B19",
-"+ 	c #873B0C",
-"@ 	c #5FD15E",
-"# 	c #5FD15F",
-"$ 	c #5492FE",
-"% 	c #92B6ED",
-"& 	c #F8F5E1",
-"* 	c #C89066",
-"= 	c #924510",
-"- 	c #753207",
-"; 	c #7A5033",
-"> 	c #5DCD5D",
-", 	c #5DCE5D",
-"' 	c #55CB57",
-") 	c #BCE5A6",
-"! 	c #CCE5D1",
-"~ 	c #9ED8C7",
-"{ 	c #83B8C7",
-"] 	c #5A95FF",
-"^ 	c #CAD8E2",
-"/ 	c #F4D5AB",
-"( 	c #A45C2D",
-"_ 	c #864107",
-": 	c #794B2A",
-"< 	c #F9F0D9",
-"[ 	c #59C559",
-"} 	c #57C558",
-"| 	c #4DC150",
-"1 	c #CCE7B0",
-"2 	c #BADDCB",
-"3 	c #A5D9C2",
-"4 	c #75A8DA",
-"5 	c #669CF9",
-"6 	c #EEE4C7",
-"7 	c #C58C5C",
-"8 	c #8C3D0B",
-"9 	c #672A02",
-"0 	c #D3AB93",
-"a 	c #FFE9D1",
-"b 	c #48BA4B",
-"c 	c #55BD55",
-"d 	c #97D387",
-"e 	c #EEF0CA",
-"f 	c #F8F1CF",
-"g 	c #FFF1C4",
-"h 	c #C7D1D5",
-"i 	c #5292FB",
-"j 	c #B3A6A2",
-"k 	c #A0501A",
-"l 	c #742C00",
-"m 	c #987554",
-"n 	c #F9CDB6",
-"o 	c #FED2BB",
-"p 	c #EBEAC3",
-"q 	c #F2EDC9",
-"r 	c #F7E8CB",
-"s 	c #FAECCF",
-"t 	c #FFF2C9",
-"u 	c #FFF0BF",
-"v 	c #EDE4BD",
-"w 	c #628CDE",
-"x 	c #865E5B",
-"y 	c #8A3904",
-"z 	c #6C340F",
-"A 	c #E9D9B8",
-"B 	c #FDF2D2",
-"C 	c #F8E7CB",
-"D 	c #FAEFCE",
-"E 	c #DFC2B9",
-"F 	c #E6ABAE",
-"G 	c #F6DCC6",
-"H 	c #FFF0C5",
-"I 	c #F9E6B4",
-"J 	c #D5E8AB",
-"K 	c #A49698",
-"L 	c #933E09",
-"M 	c #6E2A00",
-"N 	c #AB8C6A",
-"O 	c #EBE0C0",
-"P 	c #E7D79A",
-"Q 	c #F3DF74",
-"R 	c #F4E9C4",
-"S 	c #D9C1B1",
-"T 	c #E8AFB1",
-"U 	c #F0CDBC",
-"V 	c #F0C9B1",
-"W 	c #EDC9A3",
-"X 	c #F8DFA5",
-"Y 	c #AF632C",
-"Z 	c #7F3304",
-"` 	c #66381D",
-" .	c #988C78",
-"..	c #BEB28A",
-"+.	c #DECC6C",
-"@.	c #F2DF7C",
-"#.	c #F7EBC2",
-"$.	c #DAC5B1",
-"%.	c #EAB5B3",
-"&.	c #E5AEB0",
-"*.	c #E5A6A3",
-"=.	c #F3CD9F",
-"-.	c #E7C695",
-";.	c #995027",
-">.	c #6C2E07",
-",.	c #53494B",
-"'.	c #9D9B8F",
-").	c #CFC079",
-"!.	c #EAD56C",
-"~.	c #F5E59F",
-"{.	c #F8EBC0",
-"].	c #E1D2B8",
-"^.	c #F5D4BA",
-"/.	c #FCDDBC",
-"(.	c #FFE2B0",
-"_.	c #DDD4A1",
-":.	c #E6CAAA",
-"<.	c #C19884",
-"[.	c #6F5654",
-"}.	c #4D6CA3",
-"|.	c #D0CFBE",
-"1.	c #FCEBB3",
-"2.	c #F5E4A0",
-"3.	c #F7EAC3",
-"4.	c #F5E5B9",
-"5.	c #DED3B2",
-"6.	c #D2D2BA",
-"7.	c #BBC9BE",
-"8.	c #95B0B0",
-"9.	c #8AA59F",
-"0.	c #D5B89B",
-"a.	c #9D8980",
-"b.	c #476EB0",
-"c.	c #598FEB",
-"d.	c #95B6EB",
-"e.	c #D0CEC0",
-"f.	c #FBEBBB",
-"g.	c #FEEEBE",
-"h.	c #F6E6B6",
-"i.	c #D9D0AE",
-"j.	c #B2C2BB",
-"k.	c #8DAFBF",
-"l.	c #7FA4B1",
-"m.	c #97A08C",
-"n.	c #B5A883",
-"o.	c #E0D097",
-"p.	c #6B95D2",
-"q.	c #568FF0",
-"r.	c #7CA5EC",
-"s.	c #7DA3E4",
-"t.	c #B9C8D5",
-"u.	c #FFF0B8",
-"v.	c #F0E1B1",
-"w.	c #D1C7AA",
-"x.	c #C6C0A8",
-"y.	c #C1BCA6",
-"z.	c #BCB08F",
-"A.	c #D5C186",
-"B.	c #FFEB97",
-"C.	c #FFE796",
-"D.	c #BEC1AD",
-"E.	c #6C97E0",
-"F.	c #7EA4E4",
-"G.	c #76A2EE",
-"H.	c #72A0F0",
-"I.	c #B8C7D2",
-"J.	c #CDC5A9",
-"K.	c #D8D2B8",
-"L.	c #C4CAC5",
-"M.	c #C1CACC",
-"N.	c #BBC3BD",
-"O.	c #A7B1AF",
-"P.	c #DFD099",
-"Q.	c #FFE38E",
-"R.	c #FFE288",
-"S.	c #D5CDA7",
-"T.	c #81A7E6",
-"U.	c #73A1EE",
-"V.	c #74A1ED",
-"W.	c #77A2EB",
-"X.	c #D9D3B5",
-"Y.	c #A3B8D4",
-"Z.	c #7AA2E6",
-"`.	c #6D9CEC",
-" +	c #4F88EA",
-".+	c #286DE4",
-"++	c #5D84BE",
-"@+	c #CFBD7F",
-"#+	c #CAB36D",
-"$+	c #BBAC7D",
-"%+	c #7692BF",
-"&+	c #6991D5",
-"*+	c #6E98E0",
-"=+	c #739FEA",
-"                        . +     ",
-"  @ #           $ % & * = - ;   ",
-"  > , ' ) ! ~ { ] ^ / ( _ : <   ",
-"  [ } | 1 2 3 4 5 6 7 8 9 0 a   ",
-"  b c d e f g h i j k l m n o   ",
-"  p q r s t u v w x y z A B C   ",
-"  D E F G H I J K L M N O P Q   ",
-"  R S T U V W X Y Z `  ...+. at .  ",
-"  #.$.%.&.*.=.-.;.>.,.'.).!.~.  ",
-"  {.].^./.(._.:.<.[.}.|.1.2.3.  ",
-"  4.5.6.7.8.9.0.a.b.c.d.e.f.g.  ",
-"  h.i.j.k.l.m.n.o.p.q.r.s.t.u.  ",
-"  v.w.x.y.z.A.B.C.D.E.F.G.H.I.  ",
-"  J.K.L.M.N.O.P.Q.R.S.T.U.V.W.  ",
-"  X.Y.Z.`. +.+++ at +#+$+%+&+*+=+  ",
-"                                "};
diff --git a/linux/latest/usr/share/pixmaps/josm-latest-32.xpm b/linux/latest/usr/share/pixmaps/josm-latest-32.xpm
deleted file mode 100644
index 641838a..0000000
--- a/linux/latest/usr/share/pixmaps/josm-latest-32.xpm
+++ /dev/null
@@ -1,714 +0,0 @@
-/* XPM */
-static char * josm32DG2_xpm[] = {
-"32 32 679 2",
-"  	c None",
-". 	c #9F4D1B",
-"+ 	c #904211",
-"@ 	c #873C0B",
-"# 	c #A95522",
-"$ 	c #964614",
-"% 	c #883B0C",
-"& 	c #853909",
-"* 	c #6A2F08",
-"= 	c #5FD15F",
-"- 	c #659BF8",
-"; 	c #DADFD9",
-"> 	c #FFF8DC",
-", 	c #FFFBE4",
-"' 	c #CB9168",
-") 	c #9D4916",
-"! 	c #8D3E0E",
-"~ 	c #873A0A",
-"{ 	c #76340A",
-"] 	c #5D2604",
-"^ 	c #5ED15E",
-"/ 	c #5FD15E",
-"( 	c #5FD25F",
-"_ 	c #5DD15E",
-": 	c #FFF2D6",
-"< 	c #6FA1F6",
-"[ 	c #5291FF",
-"} 	c #5191FF",
-"| 	c #8FB4EC",
-"1 	c #FAF1D1",
-"2 	c #FFF8DE",
-"3 	c #F8E8CE",
-"4 	c #AD5F2E",
-"5 	c #934310",
-"6 	c #8D450A",
-"7 	c #823C09",
-"8 	c #652B05",
-"9 	c #70472A",
-"0 	c #5DCF5D",
-"a 	c #58CE59",
-"b 	c #A3DE95",
-"c 	c #FBF5DC",
-"d 	c #FFF9E0",
-"e 	c #FFF7D1",
-"f 	c #FFF5D1",
-"g 	c #DBE8C9",
-"h 	c #89BFB7",
-"i 	c #5494F7",
-"j 	c #629AFA",
-"k 	c #E6E5D5",
-"l 	c #FFF6CF",
-"m 	c #FFFFE8",
-"n 	c #CB8E64",
-"o 	c #974411",
-"p 	c #90460F",
-"q 	c #8E4C09",
-"r 	c #733508",
-"s 	c #592404",
-"t 	c #E6D9C1",
-"u 	c #FCF2DF",
-"v 	c #5BCB5B",
-"w 	c #55CA56",
-"x 	c #A9DF99",
-"y 	c #D4DFCE",
-"z 	c #9DD3C1",
-"A 	c #5AC2BE",
-"B 	c #45BCBC",
-"C 	c #459EA5",
-"D 	c #4F90F4",
-"E 	c #5190FE",
-"F 	c #94B5E9",
-"G 	c #FFF8CC",
-"H 	c #FFF7D2",
-"I 	c #EED2AF",
-"J 	c #A45422",
-"K 	c #944412",
-"L 	c #8A450C",
-"M 	c #81410C",
-"N 	c #5F2300",
-"O 	c #A4876B",
-"P 	c #FFF8E0",
-"Q 	c #FCF1DB",
-"R 	c #5AC75A",
-"S 	c #54C556",
-"T 	c #9CD88E",
-"U 	c #FFF7D8",
-"V 	c #A5DAD1",
-"W 	c #3BBEBF",
-"X 	c #49C2C0",
-"Y 	c #64B7AF",
-"Z 	c #5B95E6",
-"` 	c #4F8FFE",
-" .	c #5090FC",
-"..	c #C0CEDA",
-"+.	c #FFF7CB",
-"@.	c #FFF5CE",
-"#.	c #C07D4D",
-"$.	c #974613",
-"%.	c #8A3D0D",
-"&.	c #833809",
-"*.	c #6E2F06",
-"=.	c #673719",
-"-.	c #F3E5CA",
-";.	c #FFF5DA",
-">.	c #FCF0D9",
-",.	c #FFF7DC",
-"'.	c #57C357",
-").	c #55C255",
-"!.	c #B8DFA2",
-"~.	c #C1DBCB",
-"{.	c #9DD4BE",
-"].	c #E0E6C2",
-"^.	c #FFF4C8",
-"/.	c #80A9EE",
-"(.	c #4C8DFC",
-"_.	c #4F8EFB",
-":.	c #C3CFD7",
-"<.	c #FFF9CB",
-"[.	c #E3BC8F",
-"}.	c #A35522",
-"|.	c #914311",
-"1.	c #843808",
-"2.	c #7B3508",
-"3.	c #5C2704",
-"4.	c #B88970",
-"5.	c #FBCCB8",
-"6.	c #FDD9C2",
-"7.	c #F4E1CA",
-"8.	c #FBF0D8",
-"9.	c #55BF55",
-"0.	c #51BE52",
-"a.	c #4EBD4F",
-"b.	c #75C86E",
-"c.	c #E7EDC6",
-"d.	c #FFF6DA",
-"e.	c #FFF4C6",
-"f.	c #FFF3C6",
-"g.	c #FFF6C3",
-"h.	c #98B6E1",
-"i.	c #4E8DFA",
-"j.	c #4D8DFA",
-"k.	c #9AB8E2",
-"l.	c #FFEDB7",
-"m.	c #BD7B4A",
-"n.	c #974412",
-"o.	c #873B0A",
-"p.	c #833909",
-"q.	c #672A03",
-"r.	c #7F5837",
-"s.	c #EDC8B0",
-"t.	c #FFCFB9",
-"u.	c #FFCDB7",
-"v.	c #FDDBC3",
-"w.	c #FCF2D9",
-"x.	c #48B74B",
-"y.	c #47B74A",
-"z.	c #7EC973",
-"A.	c #A4D690",
-"B.	c #DBE9BA",
-"C.	c #FFF6D7",
-"D.	c #FFF5D6",
-"E.	c #FFF5D4",
-"F.	c #FFF0C2",
-"G.	c #FFF0C3",
-"H.	c #FFF2C2",
-"I.	c #E4E1C8",
-"J.	c #5892F4",
-"K.	c #4A8BF9",
-"L.	c #669AF0",
-"M.	c #CEAC89",
-"N.	c #A24F1A",
-"O.	c #8D3F0E",
-"P.	c #863909",
-"Q.	c #773309",
-"R.	c #64310F",
-"S.	c #BCA787",
-"T.	c #F8E0C5",
-"U.	c #FCCCB5",
-"V.	c #FFCAB4",
-"W.	c #FEDCC2",
-"X.	c #FCF2D6",
-"Y.	c #CDE1AD",
-"Z.	c #D0E3B0",
-"`.	c #D5E5B4",
-" +	c #F1EEC9",
-".+	c #F8EDCF",
-"++	c #FEF1D4",
-"@+	c #FBEED1",
-"#+	c #FEF3D3",
-"$+	c #FFF4D2",
-"%+	c #FFF0BF",
-"&+	c #FFF0C0",
-"*+	c #FFF1C0",
-"=+	c #FFF2BC",
-"-+	c #7FA4E0",
-";+	c #4989F9",
-">+	c #5487E7",
-",+	c #A06242",
-"'+	c #95430E",
-")+	c #84390A",
-"!+	c #642B06",
-"~+	c #7F5839",
-"{+	c #FAF0CF",
-"]+	c #FEF3D2",
-"^+	c #FFF0D0",
-"/+	c #FDE7C8",
-"(+	c #F1DAC0",
-"_+	c #FAEED2",
-":+	c #FCEED0",
-"<+	c #FAECCE",
-"[+	c #FEF2D1",
-"}+	c #F8E8CA",
-"|+	c #EED4BF",
-"1+	c #F2E0C7",
-"2+	c #FFF3D2",
-"3+	c #FFF4D1",
-"4+	c #FFEFBC",
-"5+	c #FFEFBD",
-"6+	c #FFEBBC",
-"7+	c #EFEAAF",
-"8+	c #B0BCCB",
-"9+	c #4787F7",
-"0+	c #75749C",
-"a+	c #A24A0F",
-"b+	c #8C3E0D",
-"c+	c #873A09",
-"d+	c #6F3108",
-"e+	c #65320F",
-"f+	c #CAB695",
-"g+	c #FFFAD8",
-"h+	c #FFF5D2",
-"i+	c #F8EBCE",
-"j+	c #F8EACE",
-"k+	c #FEF1D1",
-"l+	c #F4EED6",
-"m+	c #E7D1BD",
-"n+	c #E6B3B0",
-"o+	c #E7AFB1",
-"p+	c #E7B1B1",
-"q+	c #F4D7C2",
-"r+	c #FFF3D0",
-"s+	c #FFF3CE",
-"t+	c #FFEEB9",
-"u+	c #FDEAB9",
-"v+	c #E7E5AF",
-"w+	c #D0ECA7",
-"x+	c #D7DBB4",
-"y+	c #4E83E7",
-"z+	c #A65729",
-"A+	c #92410E",
-"B+	c #7D3609",
-"C+	c #632A05",
-"D+	c #825E3F",
-"E+	c #FFFEDA",
-"F+	c #FCF1CC",
-"G+	c #EEDE9E",
-"H+	c #ECD76B",
-"I+	c #FBEDBE",
-"J+	c #FEF2CD",
-"K+	c #FFF5D0",
-"L+	c #C4C2B6",
-"M+	c #EAD6BF",
-"N+	c #E8B1B2",
-"O+	c #E8B2B2",
-"P+	c #F2D1BE",
-"Q+	c #FDEFCC",
-"R+	c #FEF1CC",
-"S+	c #FDEAB5",
-"T+	c #F4DFAF",
-"U+	c #E6EDAE",
-"V+	c #E6ECAD",
-"W+	c #FFF5BA",
-"X+	c #917172",
-"Y+	c #9C460E",
-"Z+	c #843909",
-"`+	c #6C2F07",
-" @	c #5C2B0B",
-".@	c #CFC1A1",
-"+@	c #E1D8B7",
-"@@	c #DBD1B4",
-"#@	c #D3C8A9",
-"$@	c #E0CE74",
-"%@	c #F1DA57",
-"&@	c #F2DA53",
-"*@	c #F3E185",
-"=@	c #FCF0C9",
-"-@	c #CFC8B1",
-";@	c #E5D9BB",
-">@	c #E7B0B1",
-",@	c #EFC9BA",
-"'@	c #FBEDC9",
-")@	c #FBECC7",
-"!@	c #EDC3A1",
-"~@	c #E9C69F",
-"{@	c #FEF0B4",
-"]@	c #FFF0B7",
-"^@	c #F0D098",
-"/@	c #A8531C",
-"(@	c #90410F",
-"_@	c #783409",
-":@	c #5F2501",
-"<@	c #735942",
-"[@	c #AFA992",
-"}@	c #B5AB93",
-"|@	c #C3B899",
-"1@	c #CDBC64",
-"2@	c #E6D47A",
-"3@	c #F1DF87",
-"4@	c #F4DF75",
-"5@	c #ECD66A",
-"6@	c #FEF1C8",
-"7@	c #E2D8B9",
-"8@	c #D7D1B5",
-"9@	c #E7B6B1",
-"0@	c #E4B6B1",
-"a@	c #EAC4B6",
-"b@	c #EDC1B6",
-"c@	c #DD928E",
-"d@	c #E6AD98",
-"e@	c #FFF3B4",
-"f@	c #FFEFB4",
-"g@	c #BF7A45",
-"h@	c #873B0B",
-"i@	c #813709",
-"j@	c #6C2D05",
-"k@	c #512B19",
-"l@	c #777773",
-"m@	c #A49B83",
-"n@	c #B6AD91",
-"o@	c #C2B78E",
-"p@	c #D6C676",
-"q@	c #E9D14A",
-"r@	c #F4DD61",
-"s@	c #EADA91",
-"t@	c #FAEDC2",
-"u@	c #FDEFC6",
-"v@	c #F3E6C0",
-"w@	c #C6C1AB",
-"x@	c #EBC3B5",
-"y@	c #E7B2B1",
-"z@	c #E7B2B2",
-"A@	c #E8B1B1",
-"B@	c #DD8C8D",
-"C@	c #DDA090",
-"D@	c #FAEDAE",
-"E@	c #E2B378",
-"F@	c #A04F1B",
-"G@	c #8D3E0D",
-"H@	c #783308",
-"I@	c #5D2601",
-"J@	c #484757",
-"K@	c #707880",
-"L@	c #AAA086",
-"M@	c #B4A97B",
-"N@	c #C8B54D",
-"O@	c #DBC86C",
-"P@	c #EEDD9B",
-"Q@	c #E9D464",
-"R@	c #FAEDBD",
-"S@	c #FFF2CA",
-"T@	c #FFF1C5",
-"U@	c #FFF2C4",
-"V@	c #B6B2A2",
-"W@	c #F0D1B9",
-"X@	c #E7B0B2",
-"Y@	c #E09E8F",
-"Z@	c #F6DFA2",
-"`@	c #FFEDAD",
-" #	c #E2C2A4",
-".#	c #B57D5D",
-"+#	c #955128",
-"@#	c #803607",
-"##	c #672B05",
-"$#	c #482D23",
-"%#	c #425374",
-"&#	c #717A85",
-"*#	c #B0A689",
-"=#	c #C2B790",
-"-#	c #D3C165",
-";#	c #E7CF4D",
-">#	c #EFD755",
-",#	c #EDE0B7",
-"'#	c #FFF2C6",
-")#	c #FEF0C3",
-"!#	c #FFF1C2",
-"~#	c #B7B3A3",
-"{#	c #F4DDBC",
-"]#	c #E9B7B3",
-"^#	c #EAB9B2",
-"/#	c #ECC5B5",
-"(#	c #F3D5B8",
-"_#	c #FDE8A3",
-":#	c #FFEAA6",
-"<#	c #FBE6A7",
-"[#	c #E3C9B0",
-"}#	c #D7BAAE",
-"|#	c #CFAD9D",
-"1#	c #996647",
-"2#	c #5B2909",
-"3#	c #32374F",
-"4#	c #496798",
-"5#	c #8897AA",
-"6#	c #E3D6AB",
-"7#	c #F4E6BC",
-"8#	c #FBEDC2",
-"9#	c #F4E189",
-"0#	c #F2DF89",
-"a#	c #FFF1C6",
-"b#	c #FCEEC3",
-"c#	c #FBECBE",
-"d#	c #FDEEBF",
-"e#	c #D0CABA",
-"f#	c #EBE0C2",
-"g#	c #EFD0B5",
-"h#	c #F9E2BB",
-"i#	c #FFF5C1",
-"j#	c #FFF3BF",
-"k#	c #F9E5A2",
-"l#	c #D3CD9F",
-"m#	c #E0D29F",
-"n#	c #E1C4AB",
-"o#	c #D1B1A3",
-"p#	c #CDA999",
-"q#	c #C29C8B",
-"r#	c #635253",
-"s#	c #294D8C",
-"t#	c #6995E2",
-"u#	c #8EB1EA",
-"v#	c #FFF2C1",
-"w#	c #FFF2C3",
-"x#	c #F4E6C0",
-"y#	c #F4E7BE",
-"z#	c #F0E4BC",
-"A#	c #F1E4BC",
-"B#	c #FAEBBC",
-"C#	c #FFEFBE",
-"D#	c #CDC5B0",
-"E#	c #EFE2BC",
-"F#	c #F7EABA",
-"G#	c #F1E7BD",
-"H#	c #E8E2BD",
-"I#	c #DFDDBD",
-"J#	c #D7D7BC",
-"K#	c #97AC9D",
-"L#	c #72979D",
-"M#	c #D1CBA1",
-"N#	c #E1C1A6",
-"O#	c #D1AE9F",
-"P#	c #BE9A8B",
-"Q#	c #766A6E",
-"R#	c #385892",
-"S#	c #336ED2",
-"T#	c #6F9FF1",
-"U#	c #77A4F3",
-"V#	c #B2C5DB",
-"W#	c #F8EBC0",
-"X#	c #F3E2B5",
-"Y#	c #EDE0B8",
-"Z#	c #F3E5BB",
-"`#	c #FAEBBD",
-" $	c #FFF1BF",
-".$	c #FAEABA",
-"+$	c #FDEEBB",
-"@$	c #C3BBA5",
-"#$	c #EFE1B5",
-"$$	c #BCC7B9",
-"%$	c #A0B8BD",
-"&$	c #9DB7BC",
-"*$	c #99B5BC",
-"=$	c #93B1BB",
-"-$	c #56879E",
-";$	c #6D959E",
-">$	c #CAC59C",
-",$	c #C6AB96",
-"'$	c #AB8E7F",
-")$	c #968464",
-"!$	c #758697",
-"~$	c #3071DE",
-"{$	c #387AE9",
-"]$	c #6D9DF0",
-"^$	c #78A4F1",
-"/$	c #79A5F1",
-"($	c #9AB7E4",
-"_$	c #C4C5BD",
-":$	c #EFDFB2",
-"<$	c #FEEEBD",
-"[$	c #FBEBB9",
-"}$	c #FFEFBA",
-"|$	c #C0B9A3",
-"1$	c #F3E4B5",
-"2$	c #AEC0BB",
-"3$	c #8BADBD",
-"4$	c #8FAFBD",
-"5$	c #8CAEBC",
-"6$	c #57889E",
-"7$	c #75989C",
-"8$	c #B6B090",
-"9$	c #827A67",
-"0$	c #BDAA76",
-"a$	c #E6D18C",
-"b$	c #B3BAAF",
-"c$	c #2D74EF",
-"d$	c #3779E9",
-"e$	c #6C9CEF",
-"f$	c #77A4F0",
-"g$	c #77A4F1",
-"h$	c #7CA4E9",
-"i$	c #87A6D8",
-"j$	c #B6C5D3",
-"k$	c #FFEFBB",
-"l$	c #FCEBB7",
-"m$	c #FFEEB8",
-"n$	c #BCB6A0",
-"o$	c #F7E6B4",
-"p$	c #AFC0BA",
-"q$	c #8EAEBD",
-"r$	c #91B0BD",
-"s$	c #8DADBC",
-"t$	c #8FA495",
-"u$	c #B4A980",
-"v$	c #948F83",
-"w$	c #E3D098",
-"x$	c #F9E195",
-"y$	c #FAE196",
-"z$	c #E4D8A3",
-"A$	c #3E7CE4",
-"B$	c #3377E8",
-"C$	c #6B9BEE",
-"D$	c #76A3EF",
-"E$	c #78A3EC",
-"F$	c #87A5D7",
-"G$	c #79A3EC",
-"H$	c #71A0F1",
-"I$	c #9DB8DF",
-"J$	c #FDEDBA",
-"K$	c #F8E8B3",
-"L$	c #FBE9B3",
-"M$	c #B8B3A1",
-"N$	c #EFE1B3",
-"O$	c #CDC8AB",
-"P$	c #D0CEB1",
-"Q$	c #D5CFAE",
-"R$	c #D7CEAA",
-"S$	c #D9CCA6",
-"T$	c #9F9270",
-"U$	c #9D9373",
-"V$	c #F7DE91",
-"W$	c #FFE997",
-"X$	c #FFE697",
-"Y$	c #F8E299",
-"Z$	c #92A9C0",
-"`$	c #3375E6",
-" %	c #6999EE",
-".%	c #78A2EC",
-"+%	c #87A4D7",
-"@%	c #79A2E9",
-"#%	c #75A2F0",
-"$%	c #76A2EF",
-"%%	c #719FF1",
-"&%	c #A1B9DB",
-"*%	c #FFEEB7",
-"=%	c #F9E8B5",
-"-%	c #DBCFAB",
-";%	c #C0BDB4",
-">%	c #C2BDAE",
-",%	c #B0AA9A",
-"'%	c #B1AA99",
-")%	c #B0A999",
-"!%	c #B2AD9C",
-"~%	c #B4AE9C",
-"{%	c #CDB97E",
-"]%	c #FFEB94",
-"^%	c #FFE794",
-"/%	c #FFE593",
-"(%	c #FFE693",
-"_%	c #F3DE97",
-":%	c #9EAEB8",
-"<%	c #84A3D7",
-"[%	c #7AA2E6",
-"}%	c #74A2EF",
-"|%	c #75A2EE",
-"1%	c #72A0EF",
-"2%	c #C7CECA",
-"3%	c #FFF2B1",
-"4%	c #C1BAA4",
-"5%	c #E9DCB6",
-"6%	c #F0E0B1",
-"7%	c #F1E1AE",
-"8%	c #CCCEC1",
-"9%	c #D4D3C1",
-"0%	c #F9E8B4",
-"a%	c #FFEEAD",
-"b%	c #C5C1A0",
-"c%	c #CDC49A",
-"d%	c #F3D889",
-"e%	c #FEE38F",
-"f%	c #FFE691",
-"g%	c #FFE591",
-"h%	c #FFE790",
-"i%	c #FFE38A",
-"j%	c #D2CDB2",
-"k%	c #7CA2E4",
-"l%	c #73A0EE",
-"m%	c #74A0EC",
-"n%	c #8EAEE1",
-"o%	c #F6E7B5",
-"p%	c #D3C7A3",
-"q%	c #FFECAE",
-"r%	c #FFF2AE",
-"s%	c #FFF1AE",
-"t%	c #B1C1D1",
-"u%	c #7CA5E9",
-"v%	c #80A7E7",
-"w%	c #8FAFDF",
-"x%	c #96B2DA",
-"y%	c #477ED9",
-"z%	c #4A7FD7",
-"A%	c #819BBC",
-"B%	c #E1CE8F",
-"C%	c #EBD389",
-"D%	c #E8D289",
-"E%	c #E9D28A",
-"F%	c #E7CF89",
-"G%	c #EED68A",
-"H%	c #FFEDAA",
-"I%	c #9FB8D9",
-"J%	c #719FED",
-"K%	c #73A0EC",
-"L%	c #7FA7E7",
-"M%	c #BBC7CC",
-"N%	c #E4D9B0",
-"O%	c #A9BACD",
-"P%	c #88A8DC",
-"Q%	c #8CACDF",
-"R%	c #73A0EB",
-"S%	c #729FEB",
-"T%	c #6F9CEA",
-"U%	c #2F71E2",
-"V%	c #3173E2",
-"W%	c #3173E3",
-"X%	c #5C89CE",
-"Y%	c #EED890",
-"Z%	c #FEE28A",
-"`%	c #FADE88",
-" &	c #F4D984",
-".&	c #D0B970",
-"+&	c #C3B27D",
-"@&	c #BBBFBA",
-"#&	c #709EED",
-"$&	c #739FEB",
-"%&	c #77A1E9",
-"&&	c #8EADDD",
-"*&	c #7097DB",
-"=&	c #719BE2",
-"-&	c #719CE5",
-";&	c #719CE6",
-">&	c #729EEA",
-",&	c #2E70E1",
-"'&	c #3172E0",
-")&	c #2B6BDC",
-"!&	c #5983C1",
-"~&	c #DCC375",
-"{&	c #978651",
-"]&	c #3C5072",
-"^&	c #5979AE",
-"/&	c #6D95D9",
-"(&	c #729EE9",
-"_&	c #759FE7",
-":&	c #729BE3",
-"<&	c #729BE2",
-"[&	c #6F9AE7",
-"}&	c #2E70DE",
-"|&	c #2E6BD1",
-"1&	c #2D64C2",
-"2&	c #265097",
-"3&	c #5F80B7",
-"4&	c #7099E0",
-"5&	c #719CE4",
-"6&	c #729CE4",
-"                                                . + @           ",
-"                                              # $ % & *         ",
-"    = =                             - ; > , ' ) ! ~ { ]         ",
-"    ^ ^ ^ / ( _             : < [ } | 1 2 3 4 5 6 7 8 9         ",
-"    0 0 0 0 0 a b c d e f g h i } j k l m n o p q r s t u       ",
-"    v v v v v w x 2 y z A B C D E F G H I J K L M N O P Q 2     ",
-"    R R R R R S T U V W X Y Z `  ...+. at .#.$.%.&.*.=.-.;.>.,.    ",
-"    '.'.'.'.'.).!.> ~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.    ",
-"    9.9.9.0.a.b.c.d.U e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.    ",
-"    x.y.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.    ",
-"    Y.Z.`. +.+++ at +#+$+%+&+*+=+-+;+>+,+'+o.)+!+~+{+]+^+/+(+_+    ",
-"    :+<+:+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+$+    ",
-"    f l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+~ B+C+D+E+F+i+G+H+I+J+    ",
-"    K+L+M+N+O+o+P+Q+R+S+T+U+V+W+X+Y+%.Z+`+ @. at +@@@#@$@%@&@*@    ",
-"    =@-@;@p+O+>@,@'@)@!@~@{@]@^@/@(@P._@:@<@[@}@|@1 at 2@3 at 4@5@    ",
-"    6 at 7@8 at 9@O+O+0 at a@b at c@d at e@f at g@$.h at i@j at k@l at m@n at o@p at q@r at s@t@    ",
-"    u at v@w at x@N+O+y at z@A at B@C at D@E at F@G at Z+H@I at J@K at L@M at N@O at P@Q at R@S@    ",
-"    T at U@V at W@X at O+O+O+A@Y at Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#T@    ",
-"    )#!#~#{#p+]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#b#    ",
-"    c#d#e#f#g#h#%+i#j#k#l#m#n#o#p#q#r#s#t#u#!#v#w#'#x#y#z#A#    ",
-"    B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $%+    ",
-"    .$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$5+5+5+    ",
-"    [$}$|$1$2$3$4$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$k$k$k$    ",
-"    l$m$n$o$p$q$r$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$t+t+    ",
-"    K$L$M$N$O$P$Q$R$S$T$U$V$W$X$X$Y$Z$`$ %.%+%@%#%$%%%&%*%*%    ",
-"    =%-%;%>%,%'%)%!%~%{%]%^%/%/%/%(%_%:%-+<%[%}%|%|%|%1%2%3%    ",
-"    |$4%5%6%7%8%9%0%a%b%c%d%e%f%g%g%h%i%j%k%l%m%m%m%m%m%n%o%    ",
-"    p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%K%K%K%K%L%M%    ",
-"    N%O%P%Q%R%S%S%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&S%S%S%S%%&&&    ",
-"        *&=&-&;&>&>&T%,&'&'&)&!&~&{&        ]&^&/&;&;&>&(&_&    ",
-"                :&<&[&}&|&1&2&                      3&4&5&6&    ",
-"                                                                "};
diff --git a/linux/tested/DEBIAN/control b/linux/tested/DEBIAN/control
index 485b02d..33f6869 100644
--- a/linux/tested/DEBIAN/control
+++ b/linux/tested/DEBIAN/control
@@ -5,7 +5,7 @@ Maintainer: josm developers <josm-dev at openstreetmap.org>
 Homepage: https://josm.openstreetmap.de
 Priority: extra
 Architecture: all
-Depends: openjdk-7-jre | openjdk-8-jre
+Depends: openjdk-7-jre | openjdk-8-jre | openjdk-9-jre
 Conflicts: josm-plugins
 Replaces: josm-plugins
 Description: Editor for OpenStreetMap
diff --git a/linux/tested/usr/share/applications/josm.desktop b/linux/tested/usr/share/applications/josm.desktop
index 5b15ef2..f21db97 100644
--- a/linux/tested/usr/share/applications/josm.desktop
+++ b/linux/tested/usr/share/applications/josm.desktop
@@ -4,10 +4,11 @@ Version=1.0
 Name=JOSM
 GenericName=Java OpenStreetMap Editor
 Comment=Extensible off-line editor for OpenStreetMap (OSM)
-Icon=josm.png
+Icon=josm
 Exec=josm %F
 Terminal=false
-MimeType=application/x-osm+xml;application/x-gpx+xml
+MimeType=application/x-osm+xml;application/x-gpx+xml;
 StartupNotify=true
-Categories=Education;Geoscience;Maps
+Categories=Education;Geoscience;Maps;
 StartupWMClass=org-openstreetmap-josm-Main
+Keywords=OpenStreetMap;OSM;
diff --git a/linux/tested/usr/share/icons/hicolor/16x16/apps/josm.png b/linux/tested/usr/share/icons/hicolor/16x16/apps/josm.png
new file mode 100644
index 0000000..475ce92
Binary files /dev/null and b/linux/tested/usr/share/icons/hicolor/16x16/apps/josm.png differ
diff --git a/linux/tested/usr/share/icons/hicolor/32x32/apps/josm.png b/linux/tested/usr/share/icons/hicolor/32x32/apps/josm.png
new file mode 100644
index 0000000..ad68382
Binary files /dev/null and b/linux/tested/usr/share/icons/hicolor/32x32/apps/josm.png differ
diff --git a/linux/tested/usr/share/icons/hicolor/48x48/apps/josm.png b/linux/tested/usr/share/icons/hicolor/48x48/apps/josm.png
new file mode 100644
index 0000000..de7fe89
Binary files /dev/null and b/linux/tested/usr/share/icons/hicolor/48x48/apps/josm.png differ
diff --git a/linux/tested/usr/share/icons/hicolor/scalable/apps/josm.svg b/linux/tested/usr/share/icons/hicolor/scalable/apps/josm.svg
new file mode 100644
index 0000000..c021dc9
--- /dev/null
+++ b/linux/tested/usr/share/icons/hicolor/scalable/apps/josm.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 1000 1000"><defs>  <filter color-interpolation-filters="sRGB" id="A">    <feGaussianBlur stdDeviation=".5"/>  </filter>  <filter color-interpolation-filters="sRGB" id="3">    <feGaussianBlur stdDeviation="10"/>  </filter>  <filter x="-.033" y="-.309" width="1.066" height="1.618" color-interpolation-filters="sRGB" id="5">    <feGaussianBlur st [...]
\ No newline at end of file
diff --git a/linux/tested/usr/share/menu/josm b/linux/tested/usr/share/menu/josm
deleted file mode 100644
index cf50675..0000000
--- a/linux/tested/usr/share/menu/josm
+++ /dev/null
@@ -1,2 +0,0 @@
-?package(josm): needs="X11" section="Applications/Science/Geoscience" title="JOSM" command="/usr/bin/josm"\
-icon16x16="/usr/share/pixmaps/josm-16.xpm" icon32x32="/usr/share/pixmaps/josm-32.xpm"
diff --git a/linux/tested/usr/share/pixmaps/josm-16.xpm b/linux/tested/usr/share/pixmaps/josm-16.xpm
deleted file mode 100644
index 0e179ee..0000000
--- a/linux/tested/usr/share/pixmaps/josm-16.xpm
+++ /dev/null
@@ -1,213 +0,0 @@
-/* XPM */
-static char * josm16DG2_xpm[] = {
-"16 16 194 2",
-"  	c None",
-". 	c #9B4B19",
-"+ 	c #873B0C",
-"@ 	c #5FD15E",
-"# 	c #5FD15F",
-"$ 	c #5492FE",
-"% 	c #92B6ED",
-"& 	c #F8F5E1",
-"* 	c #C89066",
-"= 	c #924510",
-"- 	c #753207",
-"; 	c #7A5033",
-"> 	c #5DCD5D",
-", 	c #5DCE5D",
-"' 	c #55CB57",
-") 	c #BCE5A6",
-"! 	c #CCE5D1",
-"~ 	c #9ED8C7",
-"{ 	c #83B8C7",
-"] 	c #5A95FF",
-"^ 	c #CAD8E2",
-"/ 	c #F4D5AB",
-"( 	c #A45C2D",
-"_ 	c #864107",
-": 	c #794B2A",
-"< 	c #F9F0D9",
-"[ 	c #59C559",
-"} 	c #57C558",
-"| 	c #4DC150",
-"1 	c #CCE7B0",
-"2 	c #BADDCB",
-"3 	c #A5D9C2",
-"4 	c #75A8DA",
-"5 	c #669CF9",
-"6 	c #EEE4C7",
-"7 	c #C58C5C",
-"8 	c #8C3D0B",
-"9 	c #672A02",
-"0 	c #D3AB93",
-"a 	c #FFE9D1",
-"b 	c #48BA4B",
-"c 	c #55BD55",
-"d 	c #97D387",
-"e 	c #EEF0CA",
-"f 	c #F8F1CF",
-"g 	c #FFF1C4",
-"h 	c #C7D1D5",
-"i 	c #5292FB",
-"j 	c #B3A6A2",
-"k 	c #A0501A",
-"l 	c #742C00",
-"m 	c #987554",
-"n 	c #F9CDB6",
-"o 	c #FED2BB",
-"p 	c #EBEAC3",
-"q 	c #F2EDC9",
-"r 	c #F7E8CB",
-"s 	c #FAECCF",
-"t 	c #FFF2C9",
-"u 	c #FFF0BF",
-"v 	c #EDE4BD",
-"w 	c #628CDE",
-"x 	c #865E5B",
-"y 	c #8A3904",
-"z 	c #6C340F",
-"A 	c #E9D9B8",
-"B 	c #FDF2D2",
-"C 	c #F8E7CB",
-"D 	c #FAEFCE",
-"E 	c #DFC2B9",
-"F 	c #E6ABAE",
-"G 	c #F6DCC6",
-"H 	c #FFF0C5",
-"I 	c #F9E6B4",
-"J 	c #D5E8AB",
-"K 	c #A49698",
-"L 	c #933E09",
-"M 	c #6E2A00",
-"N 	c #AB8C6A",
-"O 	c #EBE0C0",
-"P 	c #E7D79A",
-"Q 	c #F3DF74",
-"R 	c #F4E9C4",
-"S 	c #D9C1B1",
-"T 	c #E8AFB1",
-"U 	c #F0CDBC",
-"V 	c #F0C9B1",
-"W 	c #EDC9A3",
-"X 	c #F8DFA5",
-"Y 	c #AF632C",
-"Z 	c #7F3304",
-"` 	c #66381D",
-" .	c #988C78",
-"..	c #BEB28A",
-"+.	c #DECC6C",
-"@.	c #F2DF7C",
-"#.	c #F7EBC2",
-"$.	c #DAC5B1",
-"%.	c #EAB5B3",
-"&.	c #E5AEB0",
-"*.	c #E5A6A3",
-"=.	c #F3CD9F",
-"-.	c #E7C695",
-";.	c #995027",
-">.	c #6C2E07",
-",.	c #53494B",
-"'.	c #9D9B8F",
-").	c #CFC079",
-"!.	c #EAD56C",
-"~.	c #F5E59F",
-"{.	c #F8EBC0",
-"].	c #E1D2B8",
-"^.	c #F5D4BA",
-"/.	c #FCDDBC",
-"(.	c #FFE2B0",
-"_.	c #DDD4A1",
-":.	c #E6CAAA",
-"<.	c #C19884",
-"[.	c #6F5654",
-"}.	c #4D6CA3",
-"|.	c #D0CFBE",
-"1.	c #FCEBB3",
-"2.	c #F5E4A0",
-"3.	c #F7EAC3",
-"4.	c #F5E5B9",
-"5.	c #DED3B2",
-"6.	c #D2D2BA",
-"7.	c #BBC9BE",
-"8.	c #95B0B0",
-"9.	c #8AA59F",
-"0.	c #D5B89B",
-"a.	c #9D8980",
-"b.	c #476EB0",
-"c.	c #598FEB",
-"d.	c #95B6EB",
-"e.	c #D0CEC0",
-"f.	c #FBEBBB",
-"g.	c #FEEEBE",
-"h.	c #F6E6B6",
-"i.	c #D9D0AE",
-"j.	c #B2C2BB",
-"k.	c #8DAFBF",
-"l.	c #7FA4B1",
-"m.	c #97A08C",
-"n.	c #B5A883",
-"o.	c #E0D097",
-"p.	c #6B95D2",
-"q.	c #568FF0",
-"r.	c #7CA5EC",
-"s.	c #7DA3E4",
-"t.	c #B9C8D5",
-"u.	c #FFF0B8",
-"v.	c #F0E1B1",
-"w.	c #D1C7AA",
-"x.	c #C6C0A8",
-"y.	c #C1BCA6",
-"z.	c #BCB08F",
-"A.	c #D5C186",
-"B.	c #FFEB97",
-"C.	c #FFE796",
-"D.	c #BEC1AD",
-"E.	c #6C97E0",
-"F.	c #7EA4E4",
-"G.	c #76A2EE",
-"H.	c #72A0F0",
-"I.	c #B8C7D2",
-"J.	c #CDC5A9",
-"K.	c #D8D2B8",
-"L.	c #C4CAC5",
-"M.	c #C1CACC",
-"N.	c #BBC3BD",
-"O.	c #A7B1AF",
-"P.	c #DFD099",
-"Q.	c #FFE38E",
-"R.	c #FFE288",
-"S.	c #D5CDA7",
-"T.	c #81A7E6",
-"U.	c #73A1EE",
-"V.	c #74A1ED",
-"W.	c #77A2EB",
-"X.	c #D9D3B5",
-"Y.	c #A3B8D4",
-"Z.	c #7AA2E6",
-"`.	c #6D9CEC",
-" +	c #4F88EA",
-".+	c #286DE4",
-"++	c #5D84BE",
-"@+	c #CFBD7F",
-"#+	c #CAB36D",
-"$+	c #BBAC7D",
-"%+	c #7692BF",
-"&+	c #6991D5",
-"*+	c #6E98E0",
-"=+	c #739FEA",
-"                        . +     ",
-"  @ #           $ % & * = - ;   ",
-"  > , ' ) ! ~ { ] ^ / ( _ : <   ",
-"  [ } | 1 2 3 4 5 6 7 8 9 0 a   ",
-"  b c d e f g h i j k l m n o   ",
-"  p q r s t u v w x y z A B C   ",
-"  D E F G H I J K L M N O P Q   ",
-"  R S T U V W X Y Z `  ...+. at .  ",
-"  #.$.%.&.*.=.-.;.>.,.'.).!.~.  ",
-"  {.].^./.(._.:.<.[.}.|.1.2.3.  ",
-"  4.5.6.7.8.9.0.a.b.c.d.e.f.g.  ",
-"  h.i.j.k.l.m.n.o.p.q.r.s.t.u.  ",
-"  v.w.x.y.z.A.B.C.D.E.F.G.H.I.  ",
-"  J.K.L.M.N.O.P.Q.R.S.T.U.V.W.  ",
-"  X.Y.Z.`. +.+++ at +#+$+%+&+*+=+  ",
-"                                "};
diff --git a/linux/tested/usr/share/pixmaps/josm-32.xpm b/linux/tested/usr/share/pixmaps/josm-32.xpm
deleted file mode 100644
index 641838a..0000000
--- a/linux/tested/usr/share/pixmaps/josm-32.xpm
+++ /dev/null
@@ -1,714 +0,0 @@
-/* XPM */
-static char * josm32DG2_xpm[] = {
-"32 32 679 2",
-"  	c None",
-". 	c #9F4D1B",
-"+ 	c #904211",
-"@ 	c #873C0B",
-"# 	c #A95522",
-"$ 	c #964614",
-"% 	c #883B0C",
-"& 	c #853909",
-"* 	c #6A2F08",
-"= 	c #5FD15F",
-"- 	c #659BF8",
-"; 	c #DADFD9",
-"> 	c #FFF8DC",
-", 	c #FFFBE4",
-"' 	c #CB9168",
-") 	c #9D4916",
-"! 	c #8D3E0E",
-"~ 	c #873A0A",
-"{ 	c #76340A",
-"] 	c #5D2604",
-"^ 	c #5ED15E",
-"/ 	c #5FD15E",
-"( 	c #5FD25F",
-"_ 	c #5DD15E",
-": 	c #FFF2D6",
-"< 	c #6FA1F6",
-"[ 	c #5291FF",
-"} 	c #5191FF",
-"| 	c #8FB4EC",
-"1 	c #FAF1D1",
-"2 	c #FFF8DE",
-"3 	c #F8E8CE",
-"4 	c #AD5F2E",
-"5 	c #934310",
-"6 	c #8D450A",
-"7 	c #823C09",
-"8 	c #652B05",
-"9 	c #70472A",
-"0 	c #5DCF5D",
-"a 	c #58CE59",
-"b 	c #A3DE95",
-"c 	c #FBF5DC",
-"d 	c #FFF9E0",
-"e 	c #FFF7D1",
-"f 	c #FFF5D1",
-"g 	c #DBE8C9",
-"h 	c #89BFB7",
-"i 	c #5494F7",
-"j 	c #629AFA",
-"k 	c #E6E5D5",
-"l 	c #FFF6CF",
-"m 	c #FFFFE8",
-"n 	c #CB8E64",
-"o 	c #974411",
-"p 	c #90460F",
-"q 	c #8E4C09",
-"r 	c #733508",
-"s 	c #592404",
-"t 	c #E6D9C1",
-"u 	c #FCF2DF",
-"v 	c #5BCB5B",
-"w 	c #55CA56",
-"x 	c #A9DF99",
-"y 	c #D4DFCE",
-"z 	c #9DD3C1",
-"A 	c #5AC2BE",
-"B 	c #45BCBC",
-"C 	c #459EA5",
-"D 	c #4F90F4",
-"E 	c #5190FE",
-"F 	c #94B5E9",
-"G 	c #FFF8CC",
-"H 	c #FFF7D2",
-"I 	c #EED2AF",
-"J 	c #A45422",
-"K 	c #944412",
-"L 	c #8A450C",
-"M 	c #81410C",
-"N 	c #5F2300",
-"O 	c #A4876B",
-"P 	c #FFF8E0",
-"Q 	c #FCF1DB",
-"R 	c #5AC75A",
-"S 	c #54C556",
-"T 	c #9CD88E",
-"U 	c #FFF7D8",
-"V 	c #A5DAD1",
-"W 	c #3BBEBF",
-"X 	c #49C2C0",
-"Y 	c #64B7AF",
-"Z 	c #5B95E6",
-"` 	c #4F8FFE",
-" .	c #5090FC",
-"..	c #C0CEDA",
-"+.	c #FFF7CB",
-"@.	c #FFF5CE",
-"#.	c #C07D4D",
-"$.	c #974613",
-"%.	c #8A3D0D",
-"&.	c #833809",
-"*.	c #6E2F06",
-"=.	c #673719",
-"-.	c #F3E5CA",
-";.	c #FFF5DA",
-">.	c #FCF0D9",
-",.	c #FFF7DC",
-"'.	c #57C357",
-").	c #55C255",
-"!.	c #B8DFA2",
-"~.	c #C1DBCB",
-"{.	c #9DD4BE",
-"].	c #E0E6C2",
-"^.	c #FFF4C8",
-"/.	c #80A9EE",
-"(.	c #4C8DFC",
-"_.	c #4F8EFB",
-":.	c #C3CFD7",
-"<.	c #FFF9CB",
-"[.	c #E3BC8F",
-"}.	c #A35522",
-"|.	c #914311",
-"1.	c #843808",
-"2.	c #7B3508",
-"3.	c #5C2704",
-"4.	c #B88970",
-"5.	c #FBCCB8",
-"6.	c #FDD9C2",
-"7.	c #F4E1CA",
-"8.	c #FBF0D8",
-"9.	c #55BF55",
-"0.	c #51BE52",
-"a.	c #4EBD4F",
-"b.	c #75C86E",
-"c.	c #E7EDC6",
-"d.	c #FFF6DA",
-"e.	c #FFF4C6",
-"f.	c #FFF3C6",
-"g.	c #FFF6C3",
-"h.	c #98B6E1",
-"i.	c #4E8DFA",
-"j.	c #4D8DFA",
-"k.	c #9AB8E2",
-"l.	c #FFEDB7",
-"m.	c #BD7B4A",
-"n.	c #974412",
-"o.	c #873B0A",
-"p.	c #833909",
-"q.	c #672A03",
-"r.	c #7F5837",
-"s.	c #EDC8B0",
-"t.	c #FFCFB9",
-"u.	c #FFCDB7",
-"v.	c #FDDBC3",
-"w.	c #FCF2D9",
-"x.	c #48B74B",
-"y.	c #47B74A",
-"z.	c #7EC973",
-"A.	c #A4D690",
-"B.	c #DBE9BA",
-"C.	c #FFF6D7",
-"D.	c #FFF5D6",
-"E.	c #FFF5D4",
-"F.	c #FFF0C2",
-"G.	c #FFF0C3",
-"H.	c #FFF2C2",
-"I.	c #E4E1C8",
-"J.	c #5892F4",
-"K.	c #4A8BF9",
-"L.	c #669AF0",
-"M.	c #CEAC89",
-"N.	c #A24F1A",
-"O.	c #8D3F0E",
-"P.	c #863909",
-"Q.	c #773309",
-"R.	c #64310F",
-"S.	c #BCA787",
-"T.	c #F8E0C5",
-"U.	c #FCCCB5",
-"V.	c #FFCAB4",
-"W.	c #FEDCC2",
-"X.	c #FCF2D6",
-"Y.	c #CDE1AD",
-"Z.	c #D0E3B0",
-"`.	c #D5E5B4",
-" +	c #F1EEC9",
-".+	c #F8EDCF",
-"++	c #FEF1D4",
-"@+	c #FBEED1",
-"#+	c #FEF3D3",
-"$+	c #FFF4D2",
-"%+	c #FFF0BF",
-"&+	c #FFF0C0",
-"*+	c #FFF1C0",
-"=+	c #FFF2BC",
-"-+	c #7FA4E0",
-";+	c #4989F9",
-">+	c #5487E7",
-",+	c #A06242",
-"'+	c #95430E",
-")+	c #84390A",
-"!+	c #642B06",
-"~+	c #7F5839",
-"{+	c #FAF0CF",
-"]+	c #FEF3D2",
-"^+	c #FFF0D0",
-"/+	c #FDE7C8",
-"(+	c #F1DAC0",
-"_+	c #FAEED2",
-":+	c #FCEED0",
-"<+	c #FAECCE",
-"[+	c #FEF2D1",
-"}+	c #F8E8CA",
-"|+	c #EED4BF",
-"1+	c #F2E0C7",
-"2+	c #FFF3D2",
-"3+	c #FFF4D1",
-"4+	c #FFEFBC",
-"5+	c #FFEFBD",
-"6+	c #FFEBBC",
-"7+	c #EFEAAF",
-"8+	c #B0BCCB",
-"9+	c #4787F7",
-"0+	c #75749C",
-"a+	c #A24A0F",
-"b+	c #8C3E0D",
-"c+	c #873A09",
-"d+	c #6F3108",
-"e+	c #65320F",
-"f+	c #CAB695",
-"g+	c #FFFAD8",
-"h+	c #FFF5D2",
-"i+	c #F8EBCE",
-"j+	c #F8EACE",
-"k+	c #FEF1D1",
-"l+	c #F4EED6",
-"m+	c #E7D1BD",
-"n+	c #E6B3B0",
-"o+	c #E7AFB1",
-"p+	c #E7B1B1",
-"q+	c #F4D7C2",
-"r+	c #FFF3D0",
-"s+	c #FFF3CE",
-"t+	c #FFEEB9",
-"u+	c #FDEAB9",
-"v+	c #E7E5AF",
-"w+	c #D0ECA7",
-"x+	c #D7DBB4",
-"y+	c #4E83E7",
-"z+	c #A65729",
-"A+	c #92410E",
-"B+	c #7D3609",
-"C+	c #632A05",
-"D+	c #825E3F",
-"E+	c #FFFEDA",
-"F+	c #FCF1CC",
-"G+	c #EEDE9E",
-"H+	c #ECD76B",
-"I+	c #FBEDBE",
-"J+	c #FEF2CD",
-"K+	c #FFF5D0",
-"L+	c #C4C2B6",
-"M+	c #EAD6BF",
-"N+	c #E8B1B2",
-"O+	c #E8B2B2",
-"P+	c #F2D1BE",
-"Q+	c #FDEFCC",
-"R+	c #FEF1CC",
-"S+	c #FDEAB5",
-"T+	c #F4DFAF",
-"U+	c #E6EDAE",
-"V+	c #E6ECAD",
-"W+	c #FFF5BA",
-"X+	c #917172",
-"Y+	c #9C460E",
-"Z+	c #843909",
-"`+	c #6C2F07",
-" @	c #5C2B0B",
-".@	c #CFC1A1",
-"+@	c #E1D8B7",
-"@@	c #DBD1B4",
-"#@	c #D3C8A9",
-"$@	c #E0CE74",
-"%@	c #F1DA57",
-"&@	c #F2DA53",
-"*@	c #F3E185",
-"=@	c #FCF0C9",
-"-@	c #CFC8B1",
-";@	c #E5D9BB",
-">@	c #E7B0B1",
-",@	c #EFC9BA",
-"'@	c #FBEDC9",
-")@	c #FBECC7",
-"!@	c #EDC3A1",
-"~@	c #E9C69F",
-"{@	c #FEF0B4",
-"]@	c #FFF0B7",
-"^@	c #F0D098",
-"/@	c #A8531C",
-"(@	c #90410F",
-"_@	c #783409",
-":@	c #5F2501",
-"<@	c #735942",
-"[@	c #AFA992",
-"}@	c #B5AB93",
-"|@	c #C3B899",
-"1@	c #CDBC64",
-"2@	c #E6D47A",
-"3@	c #F1DF87",
-"4@	c #F4DF75",
-"5@	c #ECD66A",
-"6@	c #FEF1C8",
-"7@	c #E2D8B9",
-"8@	c #D7D1B5",
-"9@	c #E7B6B1",
-"0@	c #E4B6B1",
-"a@	c #EAC4B6",
-"b@	c #EDC1B6",
-"c@	c #DD928E",
-"d@	c #E6AD98",
-"e@	c #FFF3B4",
-"f@	c #FFEFB4",
-"g@	c #BF7A45",
-"h@	c #873B0B",
-"i@	c #813709",
-"j@	c #6C2D05",
-"k@	c #512B19",
-"l@	c #777773",
-"m@	c #A49B83",
-"n@	c #B6AD91",
-"o@	c #C2B78E",
-"p@	c #D6C676",
-"q@	c #E9D14A",
-"r@	c #F4DD61",
-"s@	c #EADA91",
-"t@	c #FAEDC2",
-"u@	c #FDEFC6",
-"v@	c #F3E6C0",
-"w@	c #C6C1AB",
-"x@	c #EBC3B5",
-"y@	c #E7B2B1",
-"z@	c #E7B2B2",
-"A@	c #E8B1B1",
-"B@	c #DD8C8D",
-"C@	c #DDA090",
-"D@	c #FAEDAE",
-"E@	c #E2B378",
-"F@	c #A04F1B",
-"G@	c #8D3E0D",
-"H@	c #783308",
-"I@	c #5D2601",
-"J@	c #484757",
-"K@	c #707880",
-"L@	c #AAA086",
-"M@	c #B4A97B",
-"N@	c #C8B54D",
-"O@	c #DBC86C",
-"P@	c #EEDD9B",
-"Q@	c #E9D464",
-"R@	c #FAEDBD",
-"S@	c #FFF2CA",
-"T@	c #FFF1C5",
-"U@	c #FFF2C4",
-"V@	c #B6B2A2",
-"W@	c #F0D1B9",
-"X@	c #E7B0B2",
-"Y@	c #E09E8F",
-"Z@	c #F6DFA2",
-"`@	c #FFEDAD",
-" #	c #E2C2A4",
-".#	c #B57D5D",
-"+#	c #955128",
-"@#	c #803607",
-"##	c #672B05",
-"$#	c #482D23",
-"%#	c #425374",
-"&#	c #717A85",
-"*#	c #B0A689",
-"=#	c #C2B790",
-"-#	c #D3C165",
-";#	c #E7CF4D",
-">#	c #EFD755",
-",#	c #EDE0B7",
-"'#	c #FFF2C6",
-")#	c #FEF0C3",
-"!#	c #FFF1C2",
-"~#	c #B7B3A3",
-"{#	c #F4DDBC",
-"]#	c #E9B7B3",
-"^#	c #EAB9B2",
-"/#	c #ECC5B5",
-"(#	c #F3D5B8",
-"_#	c #FDE8A3",
-":#	c #FFEAA6",
-"<#	c #FBE6A7",
-"[#	c #E3C9B0",
-"}#	c #D7BAAE",
-"|#	c #CFAD9D",
-"1#	c #996647",
-"2#	c #5B2909",
-"3#	c #32374F",
-"4#	c #496798",
-"5#	c #8897AA",
-"6#	c #E3D6AB",
-"7#	c #F4E6BC",
-"8#	c #FBEDC2",
-"9#	c #F4E189",
-"0#	c #F2DF89",
-"a#	c #FFF1C6",
-"b#	c #FCEEC3",
-"c#	c #FBECBE",
-"d#	c #FDEEBF",
-"e#	c #D0CABA",
-"f#	c #EBE0C2",
-"g#	c #EFD0B5",
-"h#	c #F9E2BB",
-"i#	c #FFF5C1",
-"j#	c #FFF3BF",
-"k#	c #F9E5A2",
-"l#	c #D3CD9F",
-"m#	c #E0D29F",
-"n#	c #E1C4AB",
-"o#	c #D1B1A3",
-"p#	c #CDA999",
-"q#	c #C29C8B",
-"r#	c #635253",
-"s#	c #294D8C",
-"t#	c #6995E2",
-"u#	c #8EB1EA",
-"v#	c #FFF2C1",
-"w#	c #FFF2C3",
-"x#	c #F4E6C0",
-"y#	c #F4E7BE",
-"z#	c #F0E4BC",
-"A#	c #F1E4BC",
-"B#	c #FAEBBC",
-"C#	c #FFEFBE",
-"D#	c #CDC5B0",
-"E#	c #EFE2BC",
-"F#	c #F7EABA",
-"G#	c #F1E7BD",
-"H#	c #E8E2BD",
-"I#	c #DFDDBD",
-"J#	c #D7D7BC",
-"K#	c #97AC9D",
-"L#	c #72979D",
-"M#	c #D1CBA1",
-"N#	c #E1C1A6",
-"O#	c #D1AE9F",
-"P#	c #BE9A8B",
-"Q#	c #766A6E",
-"R#	c #385892",
-"S#	c #336ED2",
-"T#	c #6F9FF1",
-"U#	c #77A4F3",
-"V#	c #B2C5DB",
-"W#	c #F8EBC0",
-"X#	c #F3E2B5",
-"Y#	c #EDE0B8",
-"Z#	c #F3E5BB",
-"`#	c #FAEBBD",
-" $	c #FFF1BF",
-".$	c #FAEABA",
-"+$	c #FDEEBB",
-"@$	c #C3BBA5",
-"#$	c #EFE1B5",
-"$$	c #BCC7B9",
-"%$	c #A0B8BD",
-"&$	c #9DB7BC",
-"*$	c #99B5BC",
-"=$	c #93B1BB",
-"-$	c #56879E",
-";$	c #6D959E",
-">$	c #CAC59C",
-",$	c #C6AB96",
-"'$	c #AB8E7F",
-")$	c #968464",
-"!$	c #758697",
-"~$	c #3071DE",
-"{$	c #387AE9",
-"]$	c #6D9DF0",
-"^$	c #78A4F1",
-"/$	c #79A5F1",
-"($	c #9AB7E4",
-"_$	c #C4C5BD",
-":$	c #EFDFB2",
-"<$	c #FEEEBD",
-"[$	c #FBEBB9",
-"}$	c #FFEFBA",
-"|$	c #C0B9A3",
-"1$	c #F3E4B5",
-"2$	c #AEC0BB",
-"3$	c #8BADBD",
-"4$	c #8FAFBD",
-"5$	c #8CAEBC",
-"6$	c #57889E",
-"7$	c #75989C",
-"8$	c #B6B090",
-"9$	c #827A67",
-"0$	c #BDAA76",
-"a$	c #E6D18C",
-"b$	c #B3BAAF",
-"c$	c #2D74EF",
-"d$	c #3779E9",
-"e$	c #6C9CEF",
-"f$	c #77A4F0",
-"g$	c #77A4F1",
-"h$	c #7CA4E9",
-"i$	c #87A6D8",
-"j$	c #B6C5D3",
-"k$	c #FFEFBB",
-"l$	c #FCEBB7",
-"m$	c #FFEEB8",
-"n$	c #BCB6A0",
-"o$	c #F7E6B4",
-"p$	c #AFC0BA",
-"q$	c #8EAEBD",
-"r$	c #91B0BD",
-"s$	c #8DADBC",
-"t$	c #8FA495",
-"u$	c #B4A980",
-"v$	c #948F83",
-"w$	c #E3D098",
-"x$	c #F9E195",
-"y$	c #FAE196",
-"z$	c #E4D8A3",
-"A$	c #3E7CE4",
-"B$	c #3377E8",
-"C$	c #6B9BEE",
-"D$	c #76A3EF",
-"E$	c #78A3EC",
-"F$	c #87A5D7",
-"G$	c #79A3EC",
-"H$	c #71A0F1",
-"I$	c #9DB8DF",
-"J$	c #FDEDBA",
-"K$	c #F8E8B3",
-"L$	c #FBE9B3",
-"M$	c #B8B3A1",
-"N$	c #EFE1B3",
-"O$	c #CDC8AB",
-"P$	c #D0CEB1",
-"Q$	c #D5CFAE",
-"R$	c #D7CEAA",
-"S$	c #D9CCA6",
-"T$	c #9F9270",
-"U$	c #9D9373",
-"V$	c #F7DE91",
-"W$	c #FFE997",
-"X$	c #FFE697",
-"Y$	c #F8E299",
-"Z$	c #92A9C0",
-"`$	c #3375E6",
-" %	c #6999EE",
-".%	c #78A2EC",
-"+%	c #87A4D7",
-"@%	c #79A2E9",
-"#%	c #75A2F0",
-"$%	c #76A2EF",
-"%%	c #719FF1",
-"&%	c #A1B9DB",
-"*%	c #FFEEB7",
-"=%	c #F9E8B5",
-"-%	c #DBCFAB",
-";%	c #C0BDB4",
-">%	c #C2BDAE",
-",%	c #B0AA9A",
-"'%	c #B1AA99",
-")%	c #B0A999",
-"!%	c #B2AD9C",
-"~%	c #B4AE9C",
-"{%	c #CDB97E",
-"]%	c #FFEB94",
-"^%	c #FFE794",
-"/%	c #FFE593",
-"(%	c #FFE693",
-"_%	c #F3DE97",
-":%	c #9EAEB8",
-"<%	c #84A3D7",
-"[%	c #7AA2E6",
-"}%	c #74A2EF",
-"|%	c #75A2EE",
-"1%	c #72A0EF",
-"2%	c #C7CECA",
-"3%	c #FFF2B1",
-"4%	c #C1BAA4",
-"5%	c #E9DCB6",
-"6%	c #F0E0B1",
-"7%	c #F1E1AE",
-"8%	c #CCCEC1",
-"9%	c #D4D3C1",
-"0%	c #F9E8B4",
-"a%	c #FFEEAD",
-"b%	c #C5C1A0",
-"c%	c #CDC49A",
-"d%	c #F3D889",
-"e%	c #FEE38F",
-"f%	c #FFE691",
-"g%	c #FFE591",
-"h%	c #FFE790",
-"i%	c #FFE38A",
-"j%	c #D2CDB2",
-"k%	c #7CA2E4",
-"l%	c #73A0EE",
-"m%	c #74A0EC",
-"n%	c #8EAEE1",
-"o%	c #F6E7B5",
-"p%	c #D3C7A3",
-"q%	c #FFECAE",
-"r%	c #FFF2AE",
-"s%	c #FFF1AE",
-"t%	c #B1C1D1",
-"u%	c #7CA5E9",
-"v%	c #80A7E7",
-"w%	c #8FAFDF",
-"x%	c #96B2DA",
-"y%	c #477ED9",
-"z%	c #4A7FD7",
-"A%	c #819BBC",
-"B%	c #E1CE8F",
-"C%	c #EBD389",
-"D%	c #E8D289",
-"E%	c #E9D28A",
-"F%	c #E7CF89",
-"G%	c #EED68A",
-"H%	c #FFEDAA",
-"I%	c #9FB8D9",
-"J%	c #719FED",
-"K%	c #73A0EC",
-"L%	c #7FA7E7",
-"M%	c #BBC7CC",
-"N%	c #E4D9B0",
-"O%	c #A9BACD",
-"P%	c #88A8DC",
-"Q%	c #8CACDF",
-"R%	c #73A0EB",
-"S%	c #729FEB",
-"T%	c #6F9CEA",
-"U%	c #2F71E2",
-"V%	c #3173E2",
-"W%	c #3173E3",
-"X%	c #5C89CE",
-"Y%	c #EED890",
-"Z%	c #FEE28A",
-"`%	c #FADE88",
-" &	c #F4D984",
-".&	c #D0B970",
-"+&	c #C3B27D",
-"@&	c #BBBFBA",
-"#&	c #709EED",
-"$&	c #739FEB",
-"%&	c #77A1E9",
-"&&	c #8EADDD",
-"*&	c #7097DB",
-"=&	c #719BE2",
-"-&	c #719CE5",
-";&	c #719CE6",
-">&	c #729EEA",
-",&	c #2E70E1",
-"'&	c #3172E0",
-")&	c #2B6BDC",
-"!&	c #5983C1",
-"~&	c #DCC375",
-"{&	c #978651",
-"]&	c #3C5072",
-"^&	c #5979AE",
-"/&	c #6D95D9",
-"(&	c #729EE9",
-"_&	c #759FE7",
-":&	c #729BE3",
-"<&	c #729BE2",
-"[&	c #6F9AE7",
-"}&	c #2E70DE",
-"|&	c #2E6BD1",
-"1&	c #2D64C2",
-"2&	c #265097",
-"3&	c #5F80B7",
-"4&	c #7099E0",
-"5&	c #719CE4",
-"6&	c #729CE4",
-"                                                . + @           ",
-"                                              # $ % & *         ",
-"    = =                             - ; > , ' ) ! ~ { ]         ",
-"    ^ ^ ^ / ( _             : < [ } | 1 2 3 4 5 6 7 8 9         ",
-"    0 0 0 0 0 a b c d e f g h i } j k l m n o p q r s t u       ",
-"    v v v v v w x 2 y z A B C D E F G H I J K L M N O P Q 2     ",
-"    R R R R R S T U V W X Y Z `  ...+. at .#.$.%.&.*.=.-.;.>.,.    ",
-"    '.'.'.'.'.).!.> ~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.    ",
-"    9.9.9.0.a.b.c.d.U e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.    ",
-"    x.y.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.    ",
-"    Y.Z.`. +.+++ at +#+$+%+&+*+=+-+;+>+,+'+o.)+!+~+{+]+^+/+(+_+    ",
-"    :+<+:+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+$+    ",
-"    f l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+~ B+C+D+E+F+i+G+H+I+J+    ",
-"    K+L+M+N+O+o+P+Q+R+S+T+U+V+W+X+Y+%.Z+`+ @. at +@@@#@$@%@&@*@    ",
-"    =@-@;@p+O+>@,@'@)@!@~@{@]@^@/@(@P._@:@<@[@}@|@1 at 2@3 at 4@5@    ",
-"    6 at 7@8 at 9@O+O+0 at a@b at c@d at e@f at g@$.h at i@j at k@l at m@n at o@p at q@r at s@t@    ",
-"    u at v@w at x@N+O+y at z@A at B@C at D@E at F@G at Z+H@I at J@K at L@M at N@O at P@Q at R@S@    ",
-"    T at U@V at W@X at O+O+O+A@Y at Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#T@    ",
-"    )#!#~#{#p+]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#b#    ",
-"    c#d#e#f#g#h#%+i#j#k#l#m#n#o#p#q#r#s#t#u#!#v#w#'#x#y#z#A#    ",
-"    B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $%+    ",
-"    .$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$5+5+5+    ",
-"    [$}$|$1$2$3$4$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$k$k$k$    ",
-"    l$m$n$o$p$q$r$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$t+t+    ",
-"    K$L$M$N$O$P$Q$R$S$T$U$V$W$X$X$Y$Z$`$ %.%+%@%#%$%%%&%*%*%    ",
-"    =%-%;%>%,%'%)%!%~%{%]%^%/%/%/%(%_%:%-+<%[%}%|%|%|%1%2%3%    ",
-"    |$4%5%6%7%8%9%0%a%b%c%d%e%f%g%g%h%i%j%k%l%m%m%m%m%m%n%o%    ",
-"    p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%K%K%K%K%L%M%    ",
-"    N%O%P%Q%R%S%S%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&S%S%S%S%%&&&    ",
-"        *&=&-&;&>&>&T%,&'&'&)&!&~&{&        ]&^&/&;&;&>&(&_&    ",
-"                :&<&[&}&|&1&2&                      3&4&5&6&    ",
-"                                                                "};
diff --git a/scripts/taginfoextract.groovy b/scripts/taginfoextract.groovy
index 51361e0..a2e203c 100644
--- a/scripts/taginfoextract.groovy
+++ b/scripts/taginfoextract.groovy
@@ -36,10 +36,11 @@ import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondit
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference
-import org.openstreetmap.josm.gui.tagging.TaggingPreset
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems
-import org.openstreetmap.josm.gui.tagging.TaggingPresetReader
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem.MatchType
 import org.openstreetmap.josm.io.CachedFile
 import org.openstreetmap.josm.tools.Utils
 
@@ -251,11 +252,11 @@ class taginfoextract {
     def convert_presets(Iterable<TaggingPreset> presets, String descriptionPrefix, boolean addImages) {
         def tags = []
         for (TaggingPreset preset : presets) {
-            for (TaggingPresetItems.KeyedItem item : Utils.filteredCollection(preset.data, TaggingPresetItems.KeyedItem.class)) {
+            for (KeyedItem item : Utils.filteredCollection(preset.data, KeyedItem.class)) {
                 def values
-                switch (TaggingPresetItems.MatchType.ofString(item.match)) {
-                    case TaggingPresetItems.MatchType.KEY_REQUIRED: values = item.getValues(); break;
-                    case TaggingPresetItems.MatchType.KEY_VALUE_REQUIRED: values = item.getValues(); break;
+                switch (MatchType.ofString(item.match)) {
+                    case MatchType.KEY_REQUIRED: values = item.getValues(); break;
+                    case MatchType.KEY_VALUE_REQUIRED: values = item.getValues(); break;
                     default: values = [];
                 }
                 for (String value : values) {
@@ -462,6 +463,4 @@ class taginfoextract {
             }
         }
     }
-
 }
-
diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
index af6b9b9..428280d 100644
--- a/src/org/openstreetmap/josm/Main.java
+++ b/src/org/openstreetmap/josm/Main.java
@@ -56,6 +56,7 @@ import javax.swing.UnsupportedLookAndFeelException;
 import org.openstreetmap.gui.jmapviewer.FeatureAdapter;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.OpenFileAction;
+import org.openstreetmap.josm.actions.OpenLocationAction;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
@@ -97,7 +98,7 @@ import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
-import org.openstreetmap.josm.gui.tagging.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.RedirectInputMap;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.io.FileWatcher;
@@ -254,8 +255,8 @@ public abstract class Main {
     }
 
     /**
-     * Replies the first lines of last 10 error and warning messages, used for bug reports
-     * @return the first lines of last 10 error and warning messages
+     * Replies the first lines of last 5 error and warning messages, used for bug reports
+     * @return the first lines of last 5 error and warning messages
      * @since 7420
      */
     public static final Collection<String> getLastErrorAndWarnings() {
@@ -263,6 +264,14 @@ public abstract class Main {
     }
 
     /**
+     * Clears the list of last error and warning messages.
+     * @since 8959
+     */
+    public static void clearLastErrorAndWarnings() {
+        ERRORS_AND_WARNINGS.clear();
+    }
+
+    /**
      * Prints an error message if logging is on.
      * @param msg The message to print.
      * @since 6248
@@ -526,7 +535,7 @@ public abstract class Main {
         }
     }
 
-    private static volatile InitStatusListener initListener = null;
+    private static volatile InitStatusListener initListener;
 
     public interface InitStatusListener {
 
@@ -984,34 +993,7 @@ public abstract class Main {
         if (args.containsKey(Option.DOWNLOAD)) {
             List<File> fileList = new ArrayList<>();
             for (String s : args.get(Option.DOWNLOAD)) {
-                File f = null;
-                switch(paramType(s)) {
-                case httpUrl:
-                    downloadFromParamHttp(false, s);
-                    break;
-                case bounds:
-                    downloadFromParamBounds(false, s);
-                    break;
-                case fileUrl:
-                    try {
-                        f = new File(new URI(s));
-                    } catch (URISyntaxException e) {
-                        JOptionPane.showMessageDialog(
-                                Main.parent,
-                                tr("Ignoring malformed file URL: \"{0}\"", s),
-                                tr("Warning"),
-                                JOptionPane.WARNING_MESSAGE
-                                );
-                    }
-                    if (f != null) {
-                        fileList.add(f);
-                    }
-                    break;
-                case fileName:
-                    f = new File(s);
-                    fileList.add(f);
-                    break;
-                }
+                DownloadParamType.paramType(s).download(s, fileList);
             }
             if (!fileList.isEmpty()) {
                 OpenFileAction.openFiles(fileList, true);
@@ -1019,22 +1001,7 @@ public abstract class Main {
         }
         if (args.containsKey(Option.DOWNLOADGPS)) {
             for (String s : args.get(Option.DOWNLOADGPS)) {
-                switch(paramType(s)) {
-                case httpUrl:
-                    downloadFromParamHttp(true, s);
-                    break;
-                case bounds:
-                    downloadFromParamBounds(true, s);
-                    break;
-                case fileUrl:
-                case fileName:
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("Parameter \"downloadgps\" does not accept file names or file URLs"),
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE
-                            );
-                }
+                DownloadParamType.paramType(s).downloadGps(s);
             }
         }
         if (args.containsKey(Option.SELECTION)) {
@@ -1135,54 +1102,112 @@ public abstract class Main {
      * The type of a command line parameter, to be used in switch statements.
      * @see #paramType
      */
-    enum DownloadParamType { httpUrl, fileUrl, bounds, fileName }
+    enum DownloadParamType {
+        httpUrl {
+            @Override
+            void download(String s, Collection<File> fileList) {
+                new OpenLocationAction().openUrl(false, s);
+            }
 
-    /**
-     * Guess the type of a parameter string specified on the command line with --download= or --downloadgps.
-     * @param s A parameter string
-     * @return The guessed parameter type
-     */
-    static DownloadParamType paramType(String s) {
-        if (s.startsWith("http:") || s.startsWith("https:")) return DownloadParamType.httpUrl;
-        if (s.startsWith("file:")) return DownloadParamType.fileUrl;
-        String coorPattern = "\\s*[+-]?[0-9]+(\\.[0-9]+)?\\s*";
-        if (s.matches(coorPattern+"(,"+coorPattern+"){3}")) return DownloadParamType.bounds;
-        // everything else must be a file name
-        return DownloadParamType.fileName;
-    }
+            @Override
+            void downloadGps(String s) {
+                final Bounds b = OsmUrlToBounds.parse(s);
+                if (b == null) {
+                    JOptionPane.showMessageDialog(
+                            Main.parent,
+                            tr("Ignoring malformed URL: \"{0}\"", s),
+                            tr("Warning"),
+                            JOptionPane.WARNING_MESSAGE
+                    );
+                    return;
+                }
+                downloadFromParamBounds(true, b);
+            }
+        }, fileUrl {
+            @Override
+            void download(String s, Collection<File> fileList) {
+                File f = null;
+                try {
+                    f = new File(new URI(s));
+                } catch (URISyntaxException e) {
+                    JOptionPane.showMessageDialog(
+                            Main.parent,
+                            tr("Ignoring malformed file URL: \"{0}\"", s),
+                            tr("Warning"),
+                            JOptionPane.WARNING_MESSAGE
+                    );
+                }
+                if (f != null) {
+                    fileList.add(f);
+                }
+            }
+        }, bounds {
+
+            /**
+             * Download area specified on the command line as bounds string.
+             * @param rawGps Flag to download raw GPS tracks
+             * @param s The bounds parameter
+             */
+            private void downloadFromParamBounds(final boolean rawGps, String s) {
+                final StringTokenizer st = new StringTokenizer(s, ",");
+                if (st.countTokens() == 4) {
+                    Bounds b = new Bounds(
+                            new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken())),
+                            new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken()))
+                    );
+                    Main.downloadFromParamBounds(rawGps, b);
+                }
+            }
 
-    /**
-     * Download area specified on the command line as OSM URL.
-     * @param rawGps Flag to download raw GPS tracks
-     * @param s The URL parameter
-     */
-    private static void downloadFromParamHttp(final boolean rawGps, String s) {
-        final Bounds b = OsmUrlToBounds.parse(s);
-        if (b == null) {
+            @Override
+            void download(String param, Collection<File> fileList) {
+                downloadFromParamBounds(false, param);
+            }
+
+            @Override
+            void downloadGps(String param) {
+                downloadFromParamBounds(true, param);
+            }
+        }, fileName {
+            @Override
+            void download(String s, Collection<File> fileList) {
+                fileList.add(new File(s));
+            }
+        };
+
+        /**
+         * Performs the download
+         * @param param represents the object to be downloaded
+         * @param fileList files which shall be opened, should be added to this collection
+         */
+        abstract void download(String param, Collection<File> fileList);
+
+        /**
+         * Performs the GPS download
+         * @param param represents the object to be downloaded
+         */
+        void downloadGps(String param) {
             JOptionPane.showMessageDialog(
                     Main.parent,
-                    tr("Ignoring malformed URL: \"{0}\"", s),
+                    tr("Parameter \"downloadgps\" does not accept file names or file URLs"),
                     tr("Warning"),
                     JOptionPane.WARNING_MESSAGE
-                    );
-        } else {
-            downloadFromParamBounds(rawGps, b);
+            );
         }
-    }
 
-    /**
-     * Download area specified on the command line as bounds string.
-     * @param rawGps Flag to download raw GPS tracks
-     * @param s The bounds parameter
-     */
-    private static void downloadFromParamBounds(final boolean rawGps, String s) {
-        final StringTokenizer st = new StringTokenizer(s, ",");
-        if (st.countTokens() == 4) {
-            Bounds b = new Bounds(
-                    new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken())),
-                    new LatLon(Double.parseDouble(st.nextToken()), Double.parseDouble(st.nextToken()))
-                    );
-            downloadFromParamBounds(rawGps, b);
+        /**
+         * Guess the type of a parameter string specified on the command line with --download= or --downloadgps.
+         *
+         * @param s A parameter string
+         * @return The guessed parameter type
+         */
+        static DownloadParamType paramType(String s) {
+            if (s.startsWith("http:") || s.startsWith("https:")) return DownloadParamType.httpUrl;
+            if (s.startsWith("file:")) return DownloadParamType.fileUrl;
+            String coorPattern = "\\s*[+-]?[0-9]+(\\.[0-9]+)?\\s*";
+            if (s.matches(coorPattern + "(," + coorPattern + "){3}")) return DownloadParamType.bounds;
+            // everything else must be a file name
+            return DownloadParamType.fileName;
         }
     }
 
@@ -1190,8 +1215,6 @@ public abstract class Main {
      * Download area specified as Bounds value.
      * @param rawGps Flag to download raw GPS tracks
      * @param b The bounds value
-     * @see #downloadFromParamBounds(boolean, String)
-     * @see #downloadFromParamHttp
      */
     private static void downloadFromParamBounds(final boolean rawGps, Bounds b) {
         DownloadTask task = rawGps ? new DownloadGpsTask() : new DownloadOsmTask();
@@ -1249,7 +1272,7 @@ public abstract class Main {
         public void componentShown(ComponentEvent e) {
         }
 
-        private void handleComponentEvent(ComponentEvent e) {
+        private static void handleComponentEvent(ComponentEvent e) {
             Component c = e.getComponent();
             if (c instanceof JFrame && c.isVisible()) {
                 if (Main.windowState == JFrame.NORMAL) {
diff --git a/src/org/openstreetmap/josm/actions/AboutAction.java b/src/org/openstreetmap/josm/actions/AboutAction.java
index 6c04dc3..064b101 100644
--- a/src/org/openstreetmap/josm/actions/AboutAction.java
+++ b/src/org/openstreetmap/josm/actions/AboutAction.java
@@ -110,7 +110,7 @@ public class AboutAction extends JosmAction {
                 new ImageIcon(ImageProvider.get("logo.svg").getImage().getScaledInstance(256, 258, Image.SCALE_SMOOTH)));
     }
 
-    private JScrollPane createScrollPane(JosmTextArea area) {
+    private static JScrollPane createScrollPane(JosmTextArea area) {
         area.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
         area.setOpaque(false);
         JScrollPane sp = new JScrollPane(area);
diff --git a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
index ee09a2d..192d9f8 100644
--- a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
@@ -135,7 +135,7 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
 
             ImageryInfo ret = new ImageryInfo(info.getName(), url, "wms", info.getEulaAcceptanceRequired(), info.getCookies());
             if (layersString.length() > 2) {
-                ret.setName(ret.getName() + " " + layersString.substring(0, layersString.length() - 2));
+                ret.setName(ret.getName() + ' ' + layersString.substring(0, layersString.length() - 2));
             }
             ret.setServerProjections(supportedCrs);
             return ret;
@@ -153,23 +153,11 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
         return null;
     }
 
-    protected boolean isLayerAlreadyPresent() {
-        if (Main.isDisplayingMapView()) {
-            for (ImageryLayer layer : Main.map.mapView.getLayersOfType(ImageryLayer.class)) {
-                if (info.equals(layer.getInfo())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
     @Override
     protected void updateEnabledState() {
         ImageryType type = info.getImageryType();
         // never enable blacklisted entries. Do not add same imagery layer twice (fix #2519)
-        if (info.isBlacklisted() /*|| isLayerAlreadyPresent()*/) {
-            // FIXME check disabled to allow several instances with different settings (see #7981)
+        if (info.isBlacklisted()) {
             setEnabled(false);
         } else if (type == ImageryType.TMS || type == ImageryType.BING || type == ImageryType.SCANEX) {
             setEnabled(true);
diff --git a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
index b116384..f65fc9a 100644
--- a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
+++ b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
@@ -61,7 +61,7 @@ public final class AlignInCircleAction extends JosmAction {
         private double radius;
         private double angle;
         private EastNorth origin = new EastNorth(0, 0);
-        private double azimuth = 0;
+        private double azimuth;
 
         PolarCoor(double radius, double angle) {
             this(radius, angle, new EastNorth(0, 0), 0);
@@ -290,7 +290,7 @@ public final class AlignInCircleAction extends JosmAction {
      * @param ways Ways from witch nodes are selected
      * @return List of nodes with more than one referrer
      */
-    private List<Node> collectNodesWithExternReferers(List<Way> ways) {
+    private static List<Node> collectNodesWithExternReferers(List<Way> ways) {
         List<Node> withReferrers = new ArrayList<>();
         for (Way w: ways) {
             for (Node n: w.getNodes()) {
@@ -307,7 +307,7 @@ public final class AlignInCircleAction extends JosmAction {
      * @param ways List of ways to be joined
      * @return Nodes anticlockwise ordered
      */
-    private List<Node> collectNodesAnticlockwise(List<Way> ways) {
+    private static List<Node> collectNodesAnticlockwise(List<Way> ways) {
         List<Node> nodes = new ArrayList<>();
         Node firstNode = ways.get(0).firstNode();
         Node lastNode = null;
@@ -354,7 +354,7 @@ public final class AlignInCircleAction extends JosmAction {
      * @param nodes Nodes to check
      * @return true if action can be done
      */
-    private boolean actionAllowed(Collection<Node> nodes) {
+    private static boolean actionAllowed(Collection<Node> nodes) {
         boolean outside = false;
         for (Node n: nodes) {
             if (n.isOutsideDownloadArea()) {
diff --git a/src/org/openstreetmap/josm/actions/AlignInLineAction.java b/src/org/openstreetmap/josm/actions/AlignInLineAction.java
index e881624..ee33498 100644
--- a/src/org/openstreetmap/josm/actions/AlignInLineAction.java
+++ b/src/org/openstreetmap/josm/actions/AlignInLineAction.java
@@ -62,7 +62,7 @@ public final class AlignInLineAction extends JosmAction {
         /**
          * Create an InvalidSelection exception with default message
          */
-        public InvalidSelection() {
+        InvalidSelection() {
             super(tr("Please select at least three nodes."));
         }
 
@@ -70,7 +70,7 @@ public final class AlignInLineAction extends JosmAction {
          * Create an InvalidSelection exception with specific message
          * @param msg Message that will be display to the user
          */
-        public InvalidSelection(String msg) {
+        InvalidSelection(String msg) {
             super(msg);
         }
     }
@@ -81,7 +81,7 @@ public final class AlignInLineAction extends JosmAction {
      * @param nodes Nodes to be aligned.
      * @return A array of two nodes.
      */
-    private Node[] nodePairFurthestApart(List<Node> nodes) {
+    private static Node[] nodePairFurthestApart(List<Node> nodes) {
         // Detect if selected nodes are on the same way.
 
         // Get ways passing though all selected nodes.
@@ -133,7 +133,7 @@ public final class AlignInLineAction extends JosmAction {
      * @param nodes List of nodes to analyze.
      * @return An array containing the two most distant nodes.
      */
-    private Node[] nodeFurthestAppart(List<Node> nodes) {
+    private static Node[] nodeFurthestAppart(List<Node> nodes) {
         Node node1 = null, node2 = null;
         double minSqDistance = 0;
         int nb;
@@ -213,7 +213,7 @@ public final class AlignInLineAction extends JosmAction {
      * @return Command that perform action.
      * @throws InvalidSelection If the nodes have same coordinates.
      */
-    private Command alignOnlyNodes(List<Node> nodes) throws InvalidSelection {
+    private static Command alignOnlyNodes(List<Node> nodes) throws InvalidSelection {
         // Choose nodes used as anchor points for projection.
         Node[] anchors = nodePairFurthestApart(nodes);
         Collection<Command> cmds = new ArrayList<>(nodes.size());
@@ -231,7 +231,7 @@ public final class AlignInLineAction extends JosmAction {
      * @return Command that perform action
      * @throws InvalidSelection if a polygon is selected, or if a node is used by 3 or more ways
      */
-    private Command alignMultiWay(Collection<Way> ways) throws InvalidSelection {
+    private static Command alignMultiWay(Collection<Way> ways) throws InvalidSelection {
         // Collect all nodes and compute line equation
         Set<Node> nodes = new HashSet<>();
         Map<Way, Line> lines = new HashMap<>();
@@ -269,7 +269,7 @@ public final class AlignInLineAction extends JosmAction {
      * @return List of useful lines
      * @throws InvalidSelection if a node got more than 4 neighbours (self-crossing way)
      */
-    private List<Line> getInvolvedLines(Node node, List<Way> refWays) throws InvalidSelection {
+    private static List<Line> getInvolvedLines(Node node, List<Way> refWays) throws InvalidSelection {
         List<Line> lines = new ArrayList<>();
         List<Node> neighbors = new ArrayList<>();
         for (Way way: refWays) {
@@ -326,7 +326,7 @@ public final class AlignInLineAction extends JosmAction {
      * @return Command that perform action
      * @throws InvalidSelection if more than 2 lines
      */
-    private Command alignSingleNode(Node node, List<Line> lines) throws InvalidSelection {
+    private static Command alignSingleNode(Node node, List<Line> lines) throws InvalidSelection {
         if (lines.size() == 1)
             return lines.get(0).projectionCommand(node);
         else if (lines.size() == 2)
@@ -355,7 +355,7 @@ public final class AlignInLineAction extends JosmAction {
          * @param last Other point of the line
          * @throws InvalidSelection if nodes have same coordinates
          */
-        public Line(Node first, Node last) throws InvalidSelection {
+        Line(Node first, Node last) throws InvalidSelection {
             xM = first.getEastNorth().getX();
             yM = first.getEastNorth().getY();
             double xB = last.getEastNorth().getX();
@@ -375,7 +375,7 @@ public final class AlignInLineAction extends JosmAction {
          * @param way Use extremity of this way to compute line equation
          * @throws InvalidSelection if nodes have same coordinates
          */
-        public Line(Way way) throws InvalidSelection {
+        Line(Way way) throws InvalidSelection {
             this(way.firstNode(), way.lastNode());
         }
 
diff --git a/src/org/openstreetmap/josm/actions/AutoScaleAction.java b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
index 2128505..6b4d5ef 100644
--- a/src/org/openstreetmap/josm/actions/AutoScaleAction.java
+++ b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
@@ -42,6 +42,9 @@ import org.openstreetmap.josm.tools.Shortcut;
  */
 public class AutoScaleAction extends JosmAction {
 
+    /**
+     * A list of things we can zoom to. The zoom target is given depending on the mode.
+     */
     public static final Collection<String> MODES = Collections.unmodifiableList(Arrays.asList(
         marktr(/* ICON(dialogs/autoscale/) */ "data"),
         marktr(/* ICON(dialogs/autoscale/) */ "layer"),
@@ -52,6 +55,9 @@ public class AutoScaleAction extends JosmAction {
         marktr(/* ICON(dialogs/autoscale/) */ "previous"),
         marktr(/* ICON(dialogs/autoscale/) */ "next")));
 
+    /**
+     * One of {@link #MODES}. Defines what we are zooming to.
+     */
     private final String mode;
 
     protected transient ZoomChangeAdapter zoomChangeAdapter;
@@ -82,10 +88,14 @@ public class AutoScaleAction extends JosmAction {
         zoomTo(sel);
     }
 
+    /**
+     * Zooms the view to display the given set of primitives.
+     * @param sel The primitives to zoom to, e.g. the current selection.
+     */
     public static void zoomTo(Collection<OsmPrimitive> sel) {
         BoundingXYVisitor bboxCalculator = new BoundingXYVisitor();
         bboxCalculator.computeBoundingBox(sel);
-        // increase bbox by 0.001 degrees on each side. this is required
+        // increase bbox. This is required
         // especially if the bbox contains one single node, but helpful
         // in most other cases as well.
         bboxCalculator.enlargeBoundingBox();
@@ -94,6 +104,10 @@ public class AutoScaleAction extends JosmAction {
         }
     }
 
+    /**
+     * Performs the auto scale operation of the given mode without the need to create a new action.
+     * @param mode One of {@link #MODES}.
+     */
     public static void autoScale(String mode) {
         new AutoScaleAction(mode, false).autoScale();
     }
@@ -171,6 +185,9 @@ public class AutoScaleAction extends JosmAction {
         installAdapters();
     }
 
+    /**
+     * Performs this auto scale operation for the mode this action is in.
+     */
     public void autoScale() {
         if (Main.isDisplayingMapView()) {
             switch (mode) {
@@ -187,7 +204,7 @@ public class AutoScaleAction extends JosmAction {
                 }
             }
         }
-        putValue("active", true);
+        putValue("active", Boolean.TRUE);
     }
 
     @Override
@@ -363,7 +380,7 @@ public class AutoScaleAction extends JosmAction {
         private ListSelectionListener conflictSelectionListener;
         private TreeSelectionListener validatorSelectionListener;
 
-        public MapFrameAdapter() {
+        MapFrameAdapter() {
             if ("conflict".equals(mode)) {
                 conflictSelectionListener = new ListSelectionListener() {
                     @Override
diff --git a/src/org/openstreetmap/josm/actions/CombineWayAction.java b/src/org/openstreetmap/josm/actions/CombineWayAction.java
index 385050f..38d70e6 100644
--- a/src/org/openstreetmap/josm/actions/CombineWayAction.java
+++ b/src/org/openstreetmap/josm/actions/CombineWayAction.java
@@ -26,7 +26,6 @@ import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.corrector.ReverseWayTagCorrector;
-import org.openstreetmap.josm.corrector.UserCancelException;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.TagCollection;
@@ -38,6 +37,7 @@ import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.UserCancelException;
 
 /**
  * Combines multiple ways into one.
@@ -463,7 +463,7 @@ public class CombineWayAction extends JosmAction {
         }
 
         private Set<NodePair> edges;
-        private int numUndirectedEges = 0;
+        private int numUndirectedEges;
         private Map<Node, List<NodePair>> successors;
         private Map<Node, List<NodePair>> predecessors;
 
@@ -496,8 +496,8 @@ public class CombineWayAction extends JosmAction {
             if (successors.get(n).size() != 1) return false;
             if (predecessors.get(n) == null) return true;
             if (predecessors.get(n).size() == 1) {
-                NodePair p1 = successors.get(n).iterator().next();
-                NodePair p2 = predecessors.get(n).iterator().next();
+                NodePair p1 = successors.get(n).get(0);
+                NodePair p2 = predecessors.get(n).get(0);
                 return p1.equals(p2.swap());
             }
             return false;
@@ -537,15 +537,6 @@ public class CombineWayAction extends JosmAction {
             }
         }
 
-        protected Node getStartNode() {
-            Set<Node> nodes = getNodes();
-            for (Node n: nodes) {
-                if (successors.get(n) != null && successors.get(n).size() == 1)
-                    return n;
-            }
-            return null;
-        }
-
         protected Set<Node> getTerminalNodes() {
             Set<Node> ret = new LinkedHashSet<>();
             for (Node n: getNodes()) {
@@ -556,15 +547,6 @@ public class CombineWayAction extends JosmAction {
             return ret;
         }
 
-        protected Set<Node> getNodes(Stack<NodePair> pairs) {
-            Set<Node> nodes = new LinkedHashSet<>(2*pairs.size());
-            for (NodePair pair: pairs) {
-                nodes.add(pair.getA());
-                nodes.add(pair.getB());
-            }
-            return nodes;
-        }
-
         protected List<NodePair> getOutboundPairs(NodePair pair) {
             return getOutboundPairs(pair.getB());
         }
diff --git a/src/org/openstreetmap/josm/actions/CopyAction.java b/src/org/openstreetmap/josm/actions/CopyAction.java
index 344dc4a..cc6cb5b 100644
--- a/src/org/openstreetmap/josm/actions/CopyAction.java
+++ b/src/org/openstreetmap/josm/actions/CopyAction.java
@@ -85,7 +85,7 @@ public final class CopyAction extends JosmAction {
         setEnabled(selection != null && !selection.isEmpty());
     }
 
-    private boolean isEmptySelection() {
+    private static boolean isEmptySelection() {
         Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
         if (sel.isEmpty()) {
             JOptionPane.showMessageDialog(
diff --git a/src/org/openstreetmap/josm/actions/CreateCircleAction.java b/src/org/openstreetmap/josm/actions/CreateCircleAction.java
index 3e1fa3e..c7391c5 100644
--- a/src/org/openstreetmap/josm/actions/CreateCircleAction.java
+++ b/src/org/openstreetmap/josm/actions/CreateCircleAction.java
@@ -247,7 +247,7 @@ public final class CreateCircleAction extends JosmAction {
      * @param nodes Nodes list to be ordered.
      * @return Modified nodes list ordered according hand traffic.
      */
-    private List<Node> orderNodesByTrafficHand(List<Node> nodes) {
+    private static List<Node> orderNodesByTrafficHand(List<Node> nodes) {
         boolean rightHandTraffic = true;
         for (Node n: nodes) {
             if (!RightAndLefthandTraffic.isRightHandTraffic(n.getCoor())) {
@@ -267,7 +267,7 @@ public final class CreateCircleAction extends JosmAction {
      * @param way Way used to determine direction.
      * @return Modified nodes list with same direction as way.
      */
-    private List<Node> orderNodesByWay(List<Node> nodes, Way way) {
+    private static List<Node> orderNodesByWay(List<Node> nodes, Way way) {
         List<Node> wayNodes = way.getNodes();
         if (!way.isClosed()) {
             wayNodes.add(wayNodes.get(0));
diff --git a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
index 659a162..0e2fc1d 100644
--- a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
+++ b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
@@ -171,7 +171,7 @@ public class CreateMultipolygonAction extends JosmAction {
         Main.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
     }
 
-    private Relation getSelectedMultipolygonRelation() {
+    private static Relation getSelectedMultipolygonRelation() {
         return getSelectedMultipolygonRelation(getCurrentDataSet().getSelectedWays(), getCurrentDataSet().getSelectedRelations());
     }
 
diff --git a/src/org/openstreetmap/josm/actions/DistributeAction.java b/src/org/openstreetmap/josm/actions/DistributeAction.java
index f5831cf..4025b64 100644
--- a/src/org/openstreetmap/josm/actions/DistributeAction.java
+++ b/src/org/openstreetmap/josm/actions/DistributeAction.java
@@ -111,7 +111,7 @@ public final class DistributeAction extends JosmAction {
      * @param nodes Selected nodes
      * @return true in this case
      */
-    private boolean checkDistributeWay(Collection<Way> ways, Collection<Node> nodes) {
+    private static boolean checkDistributeWay(Collection<Way> ways, Collection<Node> nodes) {
         if (ways.size() == 1 && nodes.size() <= 2) {
             Way w = ways.iterator().next();
             Set<Node> unduplicated = new HashSet<>(w.getNodes());
@@ -136,7 +136,7 @@ public final class DistributeAction extends JosmAction {
      * @param nodes Selected nodes, at most two nodes.
      * @return Collection of command to be executed.
      */
-    private Collection<Command> distributeWay(Collection<Way> ways,
+    private static Collection<Command> distributeWay(Collection<Way> ways,
                                               Collection<Node> nodes) {
         Way w = ways.iterator().next();
         Collection<Command> cmds = new LinkedList<>();
@@ -200,7 +200,7 @@ public final class DistributeAction extends JosmAction {
      * @param nodes Selected nodes
      * @return true in this case
      */
-    private Boolean checkDistributeNodes(Collection<Way> ways, Collection<Node> nodes) {
+    private static Boolean checkDistributeNodes(Collection<Way> ways, Collection<Node> nodes) {
         return ways.isEmpty() && nodes.size() >= 3;
     }
 
@@ -283,7 +283,7 @@ public final class DistributeAction extends JosmAction {
      * @param col Collection of nodes to check
      * @return Set of nodes without coordinates
      */
-    private Set<Node> removeNodesWithoutCoordinates(Collection<Node> col) {
+    private static Set<Node> removeNodesWithoutCoordinates(Collection<Node> col) {
         Set<Node> result = new HashSet<>();
         for (Iterator<Node> it = col.iterator(); it.hasNext();) {
             Node n = it.next();
diff --git a/src/org/openstreetmap/josm/actions/DownloadAlongAction.java b/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
index 1cbb188..0d5d8d2 100644
--- a/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
@@ -90,6 +90,13 @@ public abstract class DownloadAlongAction extends JosmAction {
      *
      * This functions calculates the rectangles, asks the user to continue and downloads
      * the areas if applicable.
+     *
+     * @param a download area hull
+     * @param maxArea maximum area size for a single download
+     * @param osmDownload Set to true if OSM data should be downloaded
+     * @param gpxDownload Set to true if GPX data should be downloaded
+     * @param title the title string for the confirmation dialog
+     * @param progressMonitor the progress monitor
      */
     protected static void confirmAndDownloadAreas(Area a, double maxArea, boolean osmDownload, boolean gpxDownload, String title,
             ProgressMonitor progressMonitor) {
diff --git a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
index df273c0..1dae971 100644
--- a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
+++ b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
@@ -3,8 +3,11 @@ package org.openstreetmap.josm.actions;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ServiceConfigurationError;
@@ -46,24 +49,24 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
 
         importers = new ArrayList<>();
 
-        String[] importerNames = {
-                "org.openstreetmap.josm.io.OsmImporter",
-                "org.openstreetmap.josm.io.OsmGzipImporter",
-                "org.openstreetmap.josm.io.OsmZipImporter",
-                "org.openstreetmap.josm.io.OsmChangeImporter",
-                "org.openstreetmap.josm.io.GpxImporter",
-                "org.openstreetmap.josm.io.NMEAImporter",
-                "org.openstreetmap.josm.io.NoteImporter",
-                "org.openstreetmap.josm.io.OsmBzip2Importer",
-                "org.openstreetmap.josm.io.JpgImporter",
-                "org.openstreetmap.josm.io.WMSLayerImporter",
-                "org.openstreetmap.josm.io.AllFormatsImporter",
-                "org.openstreetmap.josm.io.session.SessionImporter"
-        };
-
-        for (String classname : importerNames) {
+        final List<Class<? extends FileImporter>> importerNames = Arrays.asList(
+                org.openstreetmap.josm.io.OsmImporter.class,
+                org.openstreetmap.josm.io.OsmGzipImporter.class,
+                org.openstreetmap.josm.io.OsmZipImporter.class,
+                org.openstreetmap.josm.io.OsmChangeImporter.class,
+                org.openstreetmap.josm.io.GpxImporter.class,
+                org.openstreetmap.josm.io.NMEAImporter.class,
+                org.openstreetmap.josm.io.NoteImporter.class,
+                org.openstreetmap.josm.io.OsmBzip2Importer.class,
+                org.openstreetmap.josm.io.JpgImporter.class,
+                org.openstreetmap.josm.io.WMSLayerImporter.class,
+                org.openstreetmap.josm.io.AllFormatsImporter.class,
+                org.openstreetmap.josm.io.session.SessionImporter.class
+        );
+
+        for (final Class<? extends FileImporter> importerClass : importerNames) {
             try {
-                FileImporter importer = (FileImporter) Class.forName(classname).newInstance();
+                FileImporter importer = importerClass.newInstance();
                 importers.add(importer);
                 MapView.addLayerChangeListener(importer);
             } catch (Exception e) {
@@ -91,19 +94,20 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
 
         exporters = new ArrayList<>();
 
-        String[] exporterNames = {
-                "org.openstreetmap.josm.io.GpxExporter",
-                "org.openstreetmap.josm.io.OsmExporter",
-                "org.openstreetmap.josm.io.OsmGzipExporter",
-                "org.openstreetmap.josm.io.OsmBzip2Exporter",
-                "org.openstreetmap.josm.io.GeoJSONExporter",
-                "org.openstreetmap.josm.io.WMSLayerExporter",
-                "org.openstreetmap.josm.io.NoteExporter"
-        };
-
-        for (String classname : exporterNames) {
+        final List<Class<? extends FileExporter>> exporterClasses = Arrays.asList(
+                org.openstreetmap.josm.io.GpxExporter.class,
+                org.openstreetmap.josm.io.OsmExporter.class,
+                org.openstreetmap.josm.io.OsmGzipExporter.class,
+                org.openstreetmap.josm.io.OsmBzip2Exporter.class,
+                org.openstreetmap.josm.io.GeoJSONExporter.CurrentProjection.class, // needs to be considered earlier than GeoJSONExporter
+                org.openstreetmap.josm.io.GeoJSONExporter.class,
+                org.openstreetmap.josm.io.WMSLayerExporter.class,
+                org.openstreetmap.josm.io.NoteExporter.class
+        );
+
+        for (final Class<? extends FileExporter> exporterClass : exporterClasses) {
             try {
-                FileExporter exporter = (FileExporter) Class.forName(classname).newInstance();
+                FileExporter exporter = exporterClass.newInstance();
                 exporters.add(exporter);
                 MapView.addLayerChangeListener(exporter);
             } catch (Exception e) {
@@ -276,6 +280,34 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
     }
 
     /**
+     * Construct an extension file filter with the extensions supported by {@link org.openstreetmap.josm.io.Compression}
+     * automatically added to the {@code extensions}. The specified {@code extensions} will be added to the description
+     * in the form {@code old-description (*.ext1, *.ext2)}.
+     * @param extensions The comma-separated list of file extensions
+     * @param defaultExtension The default extension
+     * @param description A short textual description of the file type without supported extensions in parentheses
+     * @param addArchiveExtensionsToDescription Whether to also add the archive extensions to the description
+     * @return The constructed filter
+     */
+    public static ExtensionFileFilter newFilterWithArchiveExtensions(
+            String extensions, String defaultExtension, String description, boolean addArchiveExtensionsToDescription) {
+        final Collection<String> extensionsPlusArchive = new LinkedHashSet<>();
+        final Collection<String> extensionsForDescription = new LinkedHashSet<>();
+        for (String e : extensions.split(",")) {
+            extensionsPlusArchive.add(e);
+            extensionsPlusArchive.add(e + ".gz");
+            extensionsPlusArchive.add(e + ".bz2");
+            extensionsForDescription.add("*." + e);
+            if (addArchiveExtensionsToDescription) {
+                extensionsForDescription.add("*." + e + ".gz");
+                extensionsForDescription.add("*." + e + ".bz2");
+            }
+        }
+        return new ExtensionFileFilter(Utils.join(",", extensionsPlusArchive), defaultExtension,
+                description + " (" + Utils.join(", ", extensionsForDescription) + ")");
+    }
+
+    /**
      * Returns true if this file filter accepts the given filename.
      * @param filename The filename to check after
      * @return true if this file filter accepts the given filename (i.e if this filename ends with one of the extensions)
diff --git a/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java b/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java
index 1c7f631..7193704 100644
--- a/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java
+++ b/src/org/openstreetmap/josm/actions/HistoryInfoWebAction.java
@@ -29,7 +29,7 @@ public class HistoryInfoWebAction extends AbstractInfoAction {
     protected  String createInfoUrl(Object infoObject) {
         if (infoObject instanceof OsmPrimitive) {
             OsmPrimitive primitive = (OsmPrimitive) infoObject;
-            return Main.getBaseBrowseUrl() + "/" + OsmPrimitiveType.from(primitive).getAPIName() + "/" + primitive.getId() + "/history";
+            return Main.getBaseBrowseUrl() + '/' + OsmPrimitiveType.from(primitive).getAPIName() + '/' + primitive.getId() + "/history";
         } else {
             return null;
         }
diff --git a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
index 9e18b04..b2f52bd 100644
--- a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
+++ b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
@@ -190,7 +190,7 @@ public class ImageryAdjustAction extends MapMode implements MouseListener, Mouse
         /**
          * Constructs a new {@code ImageryOffsetDialog}.
          */
-        public ImageryOffsetDialog() {
+        ImageryOffsetDialog() {
             super(Main.parent,
                     tr("Adjust imagery offset"),
                     new String[] {tr("OK"), tr("Cancel")},
@@ -261,7 +261,7 @@ public class ImageryAdjustAction extends MapMode implements MouseListener, Mouse
             // US locale to force decimal separator to be '.'
             try (Formatter us = new Formatter(Locale.US)) {
                 tOffset.setText(us.format(
-                    "%1." + precision + "f; %1." + precision + "f",
+                    "%1." + precision + "f; %1." + precision + 'f',
                     layer.getDx(), layer.getDy()).toString());
             }
         }
diff --git a/src/org/openstreetmap/josm/actions/InfoWebAction.java b/src/org/openstreetmap/josm/actions/InfoWebAction.java
index 984a301..dfe7c97 100644
--- a/src/org/openstreetmap/josm/actions/InfoWebAction.java
+++ b/src/org/openstreetmap/josm/actions/InfoWebAction.java
@@ -35,7 +35,7 @@ public class InfoWebAction extends AbstractInfoAction {
     protected String createInfoUrl(Object infoObject) {
         if (infoObject instanceof OsmPrimitive) {
             OsmPrimitive primitive = (OsmPrimitive) infoObject;
-            return Main.getBaseBrowseUrl() + "/" + OsmPrimitiveType.from(primitive).getAPIName() + "/" + primitive.getId();
+            return Main.getBaseBrowseUrl() + '/' + OsmPrimitiveType.from(primitive).getAPIName() + '/' + primitive.getId();
         } else if (infoObject instanceof Note) {
             Note note = (Note) infoObject;
             return Main.getBaseBrowseUrl() + "/note/" + note.getId();
diff --git a/src/org/openstreetmap/josm/actions/JoinAreasAction.java b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
index 745adac..8e91375 100644
--- a/src/org/openstreetmap/josm/actions/JoinAreasAction.java
+++ b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
@@ -29,7 +29,6 @@ import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.corrector.UserCancelException;
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -45,6 +44,7 @@ import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -54,7 +54,7 @@ import org.openstreetmap.josm.tools.Utils;
 public class JoinAreasAction extends JosmAction {
     // This will be used to commit commands and unite them into one large command sequence at the end
     private final LinkedList<Command> cmds = new LinkedList<>();
-    private int cmdsCount = 0;
+    private int cmdsCount;
     private final transient List<Relation> addedRelations = new LinkedList<>();
 
     /**
@@ -84,7 +84,7 @@ public class JoinAreasAction extends JosmAction {
         public final Relation rel;
         public final String role;
 
-        public RelationRole(Relation rel, String role) {
+        RelationRole(Relation rel, String role) {
             this.rel = rel;
             this.role = role;
         }
@@ -196,7 +196,7 @@ public class JoinAreasAction extends JosmAction {
         private boolean lastWayReverse;
 
         /** Constructor */
-        public WayTraverser(Collection<WayInPolygon> ways) {
+        WayTraverser(Collection<WayInPolygon> ways) {
             availableWays = new HashSet<>(ways);
             lastWay = null;
         }
@@ -258,7 +258,8 @@ public class JoinAreasAction extends JosmAction {
         }
 
         /**
-         * Oriented angle (N1N2, N1N3) in range [0; 2*Math.PI[
+         * Returns oriented angle (N1N2, N1N3) in range [0; 2*Math.PI[
+         * @return oriented angle (N1N2, N1N3) in range [0; 2*Math.PI[
          */
         private static double getAngle(Node N1, Node N2, Node N3) {
             EastNorth en1 = N1.getEastNorth();
@@ -380,7 +381,7 @@ public class JoinAreasAction extends JosmAction {
         public final int level;
         public final AssembledMultipolygon pol;
 
-        public PolygonLevel(AssembledMultipolygon pol, int level) {
+        PolygonLevel(AssembledMultipolygon pol, int level) {
             this.pol = pol;
             this.level = level;
         }
@@ -587,11 +588,10 @@ public class JoinAreasAction extends JosmAction {
 
         // Find boundary ways
         List<Way> discardedWays = new ArrayList<>();
-        List<AssembledPolygon> bounadries = findBoundaryPolygons(preparedWays, discardedWays);
+        List<AssembledPolygon> boundaries = findBoundaryPolygons(preparedWays, discardedWays);
 
         //find polygons
-        List<AssembledMultipolygon> preparedPolygons = findPolygons(bounadries);
-
+        List<AssembledMultipolygon> preparedPolygons = findPolygons(boundaries);
 
         //assemble final polygons
         List<Multipolygon> polygons = new ArrayList<>();
@@ -929,8 +929,10 @@ public class JoinAreasAction extends JosmAction {
     }
 
     /**
-     * This is a method splits way into smaller parts, using the prepared nodes list as split points.
+     * This is a method that splits way into smaller parts, using the prepared nodes list as split points.
      * Uses {@link SplitWayAction#splitWay} for the heavy lifting.
+     * @param way way to split
+     * @param nodes split points
      * @return list of split ways (or original ways if no splitting is done).
      */
     private List<Way> splitWayOnNodes(Way way, Set<Node> nodes) {
@@ -939,7 +941,8 @@ public class JoinAreasAction extends JosmAction {
         List<List<Node>> chunks = buildNodeChunks(way, nodes);
 
         if (chunks.size() > 1) {
-            SplitWayResult split = SplitWayAction.splitWay(getEditLayer(), way, chunks, Collections.<OsmPrimitive>emptyList());
+            SplitWayResult split = SplitWayAction.splitWay(getEditLayer(), way, chunks,
+                    Collections.<OsmPrimitive>emptyList(), SplitWayAction.Strategy.keepFirstChunk());
 
             //execute the command, we need the results
             cmds.add(split.getCommand());
@@ -962,7 +965,7 @@ public class JoinAreasAction extends JosmAction {
      * @param splitNodes the places where to cut.
      * @return list of node paths to produce.
      */
-    private List<List<Node>> buildNodeChunks(Way way, Collection<Node> splitNodes) {
+    private static List<List<Node>> buildNodeChunks(Way way, Collection<Node> splitNodes) {
         List<List<Node>> result = new ArrayList<>();
         List<Node> curList = new ArrayList<>();
 
@@ -1141,6 +1144,7 @@ public class JoinAreasAction extends JosmAction {
     /**
      * This method checks if polygons have several touching parts and splits them in several polygons.
      * @param polygons the polygons to process.
+     * @return the resulting list of polygons
      */
     public static List<AssembledPolygon> fixTouchingPolygons(List<AssembledPolygon> polygons) {
         List<AssembledPolygon> newPolygons = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/actions/JosmAction.java b/src/org/openstreetmap/josm/actions/JosmAction.java
index 8839de8..abc7c76 100644
--- a/src/org/openstreetmap/josm/actions/JosmAction.java
+++ b/src/org/openstreetmap/josm/actions/JosmAction.java
@@ -273,7 +273,7 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
      * Adapter for layer change events
      *
      */
-    private class LayerChangeAdapter implements MapView.LayerChangeListener {
+    protected class LayerChangeAdapter implements MapView.LayerChangeListener {
         private void updateEnabledStateInEDT() {
             GuiHelper.runInEDT(new Runnable() {
                 @Override public void run() {
@@ -301,7 +301,7 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
     /**
      * Adapter for selection change events
      */
-    private class SelectionChangeAdapter implements SelectionChangedListener {
+    protected class SelectionChangeAdapter implements SelectionChangedListener {
         @Override
         public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
             updateEnabledState(newSelection);
diff --git a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
index d029658..e15a6ca 100644
--- a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
+++ b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
@@ -187,7 +187,7 @@ public class MapRectifierWMSmenuAction extends JosmAction {
                 // Just set the URL and hope everything works out
                 if (s.wmsUrl.isEmpty()) {
                     try {
-                        addWMSLayer(s.name + " (" + text + ")", text);
+                        addWMSLayer(s.name + " (" + text + ')', text);
                         break outer;
                     } catch (IllegalStateException ex) {
                         Main.error(ex.getMessage());
@@ -199,14 +199,14 @@ public class MapRectifierWMSmenuAction extends JosmAction {
                 if (m.find()) {
                     String id = m.group(1);
                     String newURL = s.wmsUrl.replaceAll("__s__", id);
-                    String title = s.name + " (" + id + ")";
+                    String title = s.name + " (" + id + ')';
                     addWMSLayer(title, newURL);
                     break outer;
                 }
                 // If not, look if it's a valid ID for the selected service
                 if (s.idValidator.matcher(text).matches()) {
                     String newURL = s.wmsUrl.replaceAll("__s__", text);
-                    String title = s.name + " (" + text + ")";
+                    String title = s.name + " (" + text + ')';
                     addWMSLayer(title, newURL);
                     break outer;
                 }
@@ -216,7 +216,7 @@ public class MapRectifierWMSmenuAction extends JosmAction {
                 break;
             }
 
-            // and display an error message. The while (true) ensures that the dialog pops up again
+            // and display an error message. The while loop ensures that the dialog pops up again
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Couldn''t match the entered link or id to the selected service. Please try again."),
                     tr("No valid WMS URL or id"),
@@ -230,9 +230,8 @@ public class MapRectifierWMSmenuAction extends JosmAction {
      * @param title Name of the layer as it will shop up in the layer manager
      * @param url URL to the WMS server
      * @throws IllegalStateException if imagery time is neither HTML nor WMS
-     * @see WMSLayer#checkGrabberType
      */
-    private void addWMSLayer(String title, String url) {
+    private static void addWMSLayer(String title, String url) {
         WMSLayer layer = new WMSLayer(new ImageryInfo(title, url));
         Main.main.addLayer(layer);
     }
diff --git a/src/org/openstreetmap/josm/actions/MergeLayerAction.java b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
index fa80ced..7e2e380 100644
--- a/src/org/openstreetmap/josm/actions/MergeLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
@@ -94,10 +94,7 @@ public class MergeLayerAction extends AbstractMergeAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Layer sourceLayer = Main.main.getEditLayer();
-        if (sourceLayer == null)
-            return;
-        merge(sourceLayer);
+        merge(getSourceLayer());
     }
 
     @Override
@@ -105,15 +102,21 @@ public class MergeLayerAction extends AbstractMergeAction {
         GuiHelper.runInEDT(new Runnable() {
             @Override
             public void run() {
-                if (getEditLayer() == null) {
+                final Layer sourceLayer = getSourceLayer();
+                if (sourceLayer == null) {
                     setEnabled(false);
-                    return;
+                } else {
+                    final List<Layer> possibleMergeTargets = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
+                    setEnabled(!possibleMergeTargets.isEmpty());
                 }
-                setEnabled(!LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer()).isEmpty());
             }
         });
     }
 
+    protected Layer getSourceLayer() {
+        return Main.map != null ? Main.main.getActiveLayer() : null;
+    }
+
     /**
      * Warns about a discouraged merge operation, ask for confirmation.
      * @param sourceLayer The source layer
diff --git a/src/org/openstreetmap/josm/actions/MergeNodesAction.java b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
index 7c7b5c1..2ad962f 100644
--- a/src/org/openstreetmap/josm/actions/MergeNodesAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
@@ -23,7 +23,6 @@ import org.openstreetmap.josm.command.ChangeNodesCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.corrector.UserCancelException;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -39,6 +38,7 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.UserCancelException;
 
 /**
  * Merges a collection of nodes into one node.
diff --git a/src/org/openstreetmap/josm/actions/OpenFileAction.java b/src/org/openstreetmap/josm/actions/OpenFileAction.java
index d6c0c6d..a1e56a4 100644
--- a/src/org/openstreetmap/josm/actions/OpenFileAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenFileAction.java
@@ -100,7 +100,7 @@ public class OpenFileAction extends DiskAccessAction {
         private final Set<String> failedAll = new HashSet<>();
         private final FileFilter fileFilter;
         private boolean canceled;
-        private boolean recordHistory = false;
+        private boolean recordHistory;
 
         public OpenFileTask(final List<File> files, final FileFilter fileFilter, final String title) {
             super(title, false /* don't ignore exception */);
diff --git a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
index e132ac5..903a16b 100644
--- a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
+++ b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
@@ -191,13 +191,14 @@ public final class OrthogonalizeAction extends JosmAction {
             }
             new Notification(msg)
                     .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                    .setDuration(Notification.TIME_VERY_LONG)
+                    .setDuration(Notification.TIME_DEFAULT)
                     .show();
         }
     }
 
     /**
      * Collect groups of ways with common nodes in order to orthogonalize each group separately.
+     * @return groups of ways with common nodes
      */
     private static List<List<WayData>> buildGroups(List<WayData> wayDataList) {
         List<List<WayData>> groups = new ArrayList<>();
@@ -244,7 +245,8 @@ public final class OrthogonalizeAction extends JosmAction {
      *      the mean value of their y-Coordinates.
      *      - The same for vertical segments.
      *  5. Rotate back.
-     *
+     * @return list of commands to perform
+     * @throws InvalidUserInputException if selected ways have an angle different from 90 or 180 degrees
      **/
     private static Collection<Command> orthogonalize(List<WayData> wayDataList, List<Node> headingNodes) throws InvalidUserInputException {
         // find average heading
@@ -254,14 +256,13 @@ public final class OrthogonalizeAction extends JosmAction {
                 // find directions of the segments and make them consistent between different ways
                 wayDataList.get(0).calcDirections(Direction.RIGHT);
                 double refHeading = wayDataList.get(0).heading;
+                EastNorth totSum = new EastNorth(0., 0.);
                 for (WayData w : wayDataList) {
                     w.calcDirections(Direction.RIGHT);
                     int directionOffset = angleToDirectionChange(w.heading - refHeading, TOLERANCE2);
                     w.calcDirections(Direction.RIGHT.changeBy(directionOffset));
-                    if (angleToDirectionChange(refHeading - w.heading, TOLERANCE2) != 0) throw new RuntimeException();
-                }
-                EastNorth totSum = new EastNorth(0., 0.);
-                for (WayData w : wayDataList) {
+                    if (angleToDirectionChange(refHeading - w.heading, TOLERANCE2) != 0)
+                        throw new RuntimeException();
                     totSum = EN.sum(totSum, w.segSum);
                 }
                 headingAll = EN.polar(new EastNorth(0., 0.), totSum);
@@ -342,14 +343,12 @@ public final class OrthogonalizeAction extends JosmAction {
                         }
                     }
                 }
-                for (Node n : cs) {
-                    s.remove(n);
-                }
 
                 final Map<Node, Double> nC = (orientation == HORIZONTAL) ? nY : nX;
 
                 double average = 0;
                 for (Node n : cs) {
+                    s.remove(n);
                     average += nC.get(n).doubleValue();
                 }
                 average = average / cs.size();
@@ -410,7 +409,7 @@ public final class OrthogonalizeAction extends JosmAction {
         // segments turned by 90 degrees
         public double heading;            // heading of segSum == approximate heading of the way
 
-        public WayData(Way pWay) {
+        WayData(Way pWay) {
             way = pWay;
             nNode = way.getNodes().size();
             nSeg = nNode - 1;
@@ -457,22 +456,9 @@ public final class OrthogonalizeAction extends JosmAction {
                 } else if (segDirections[i] == Direction.DOWN) {
                     v = EN.diff(v, segment);
                 } else throw new IllegalStateException();
-                /**
-                 * When summing up the length of the sum vector should increase.
-                 * However, it is possible to construct ways, such that this assertion fails.
-                 * So only uncomment this for testing
-                 **/
-                //                if (segDirections[i].ordinal() % 2 == 0) {
-                //                    if (EN.abs(h) < lh) throw new AssertionError();
-                //                    lh = EN.abs(h);
-                //                } else {
-                //                    if (EN.abs(v) < lv) throw new AssertionError();
-                //                    lv = EN.abs(v);
-                //                }
             }
             // rotate the vertical vector by 90 degrees (clockwise) and add it to the horizontal vector
             segSum = EN.sum(h, new EastNorth(v.north(), -v.east()));
-            //            if (EN.abs(segSum) < lh) throw new AssertionError();
             this.heading = EN.polar(new EastNorth(0., 0.), segSum);
         }
     }
@@ -490,6 +476,7 @@ public final class OrthogonalizeAction extends JosmAction {
 
     /**
      * Make sure angle (up to 2*Pi) is in interval [ 0, 2*Pi ).
+     * @return correct angle
      */
     private static double standard_angle_0_to_2PI(double a) {
         while (a >= 2 * Math.PI) {
@@ -503,6 +490,7 @@ public final class OrthogonalizeAction extends JosmAction {
 
     /**
      * Make sure angle (up to 2*Pi) is in interval ( -Pi, Pi ].
+     * @return correct angle
      */
     private static double standard_angle_mPI_to_PI(double a) {
         while (a > Math.PI) {
@@ -524,6 +512,7 @@ public final class OrthogonalizeAction extends JosmAction {
 
         /**
          * Rotate counter-clock-wise.
+         * @return new east/north
          */
         public static EastNorth rotateCC(EastNorth pivot, EastNorth en, double angle) {
             double cosPhi = Math.cos(angle);
@@ -550,7 +539,9 @@ public final class OrthogonalizeAction extends JosmAction {
 
     /**
      * Recognize angle to be approximately 0, 90, 180 or 270 degrees.
-     * returns an integral value, corresponding to a counter clockwise turn:
+     * returns an integral value, corresponding to a counter clockwise turn.
+     * @return an integral value, corresponding to a counter clockwise turn
+     * @throws RejectedAngleException in case of invalid angle
      */
     private static int angleToDirectionChange(double a, double deltaMax) throws RejectedAngleException {
         a = standard_angle_mPI_to_PI(a);
diff --git a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
index 31bba44..18e2149 100644
--- a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
@@ -10,6 +10,8 @@ import java.awt.GridLayout;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -20,6 +22,8 @@ import java.util.LinkedList;
 import java.util.concurrent.Future;
 
 import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ActionMap;
 import javax.swing.JButton;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
@@ -82,16 +86,45 @@ public class OverpassDownloadAction extends JosmAction {
         }
     }
 
-    static final class OverpassDownloadDialog extends DownloadDialog {
+    private static final class DisableActionsFocusListener implements FocusListener {
 
-        protected HistoryComboBox overpassServer;
-        protected HistoryComboBox overpassWizard;
-        protected JosmTextArea overpassQuery;
+        private final ActionMap actionMap;
+
+        private DisableActionsFocusListener(ActionMap actionMap) {
+            this.actionMap = actionMap;
+        }
+
+        @Override
+        public void focusGained(FocusEvent e) {
+            enableActions(false);
+        }
+
+        @Override
+        public void focusLost(FocusEvent e) {
+            enableActions(true);
+        }
+
+        private void enableActions(boolean enabled) {
+            for (Object key : actionMap.allKeys()) {
+                Action action = actionMap.get(key);
+                if (action != null) {
+                    action.setEnabled(enabled);
+                }
+            }
+        }
+    }
+
+    private static final class OverpassDownloadDialog extends DownloadDialog {
+
+        private HistoryComboBox overpassServer;
+        private HistoryComboBox overpassWizard;
+        private JosmTextArea overpassQuery;
         private static OverpassDownloadDialog instance;
-        static final StringProperty OVERPASS_SERVER = new StringProperty("download.overpass.server", "http://overpass-api.de/api/");
-        static final CollectionProperty OVERPASS_SERVER_HISTORY = new CollectionProperty("download.overpass.servers",
+        private static final StringProperty OVERPASS_SERVER = new StringProperty("download.overpass.server", "http://overpass-api.de/api/");
+        private static final CollectionProperty OVERPASS_SERVER_HISTORY = new CollectionProperty("download.overpass.servers",
                 Arrays.asList("http://overpass-api.de/api/", "http://overpass.osm.rambler.ru/cgi/"));
-        static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard", new ArrayList<String>());
+        private static final CollectionProperty OVERPASS_WIZARD_HISTORY = new CollectionProperty("download.overpass.wizard",
+                new ArrayList<String>());
 
         private OverpassDownloadDialog(Component parent) {
             super(parent, ht("/Action/OverpassDownload"));
@@ -112,11 +145,15 @@ public class OverpassDownloadAction extends JosmAction {
         @Override
         protected void buildMainPanelAboveDownloadSelections(JPanel pnl) {
 
+            DisableActionsFocusListener disableActionsFocusListener =
+                    new DisableActionsFocusListener(slippyMapChooser.getNavigationComponentActionMap());
+
             pnl.add(new JLabel(), GBC.eol()); // needed for the invisible checkboxes cbDownloadGpxData, cbDownloadNotes
 
             final String tooltip = tr("Builds an Overpass query using the Overpass Turbo query wizard");
             overpassWizard = new HistoryComboBox();
             overpassWizard.setToolTipText(tooltip);
+            overpassWizard.getEditor().getEditorComponent().addFocusListener(disableActionsFocusListener);
             final JButton buildQuery = new JButton(tr("Build query"));
             buildQuery.addActionListener(new AbstractAction() {
                 @Override
@@ -142,6 +179,7 @@ public class OverpassDownloadAction extends JosmAction {
 
             overpassQuery = new JosmTextArea("", 8, 80);
             overpassQuery.setFont(GuiHelper.getMonospacedFont(overpassQuery));
+            overpassQuery.addFocusListener(disableActionsFocusListener);
             JScrollPane scrollPane = new JScrollPane(overpassQuery);
             final JPanel pane = new JPanel(new BorderLayout());
             final BasicArrowButton arrowButton = new BasicArrowButton(BasicArrowButton.SOUTH);
@@ -159,9 +197,9 @@ public class OverpassDownloadAction extends JosmAction {
             pnl.add(pane, gbc);
 
             overpassServer = new HistoryComboBox();
+            overpassServer.getEditor().getEditorComponent().addFocusListener(disableActionsFocusListener);
             pnl.add(new JLabel(tr("Overpass server: ")), GBC.std().insets(5, 5, 5, 5));
             pnl.add(overpassServer, GBC.eol().fill(GBC.HORIZONTAL));
-
         }
 
         public String getOverpassServer() {
diff --git a/src/org/openstreetmap/josm/actions/PasteTagsAction.java b/src/org/openstreetmap/josm/actions/PasteTagsAction.java
index 89a8246..27507b2 100644
--- a/src/org/openstreetmap/josm/actions/PasteTagsAction.java
+++ b/src/org/openstreetmap/josm/actions/PasteTagsAction.java
@@ -55,7 +55,7 @@ public final class PasteTagsAction extends JosmAction {
 
         private final Collection<PrimitiveData> source;
         private final Collection<OsmPrimitive> target;
-        private final List<Tag> commands = new ArrayList<>();
+        private final List<Tag> tags = new ArrayList<>();
 
         public TagPaster(Collection<PrimitiveData> source, Collection<OsmPrimitive> target) {
             this.source = source;
@@ -63,8 +63,9 @@ public final class PasteTagsAction extends JosmAction {
         }
 
         /**
-         * Replies true if the source for tag pasting is heterogeneous, i.e. if it doesn't consist of
+         * Determines if the source for tag pasting is heterogeneous, i.e. if it doesn't consist of
          * {@link OsmPrimitive}s of exactly one type
+         * @return true if the source for tag pasting is heterogeneous
          */
         protected boolean isHeteogeneousSource() {
             int count = 0;
@@ -108,9 +109,9 @@ public final class PasteTagsAction extends JosmAction {
             return !getSourceTagsByType(type).isEmpty();
         }
 
-        protected void buildChangeCommand(Collection<? extends OsmPrimitive> selection, TagCollection tc) {
+        protected void buildTags(TagCollection tc) {
             for (String key : tc.getKeys()) {
-                commands.add(new Tag(key, tc.getValues(key).iterator().next()));
+                tags.add(new Tag(key, tc.getValues(key).iterator().next()));
             }
         }
 
@@ -160,12 +161,12 @@ public final class PasteTagsAction extends JosmAction {
                 dialog.setVisible(true);
                 if (dialog.isCanceled())
                     return;
-                buildChangeCommand(target, dialog.getResolution());
+                buildTags(dialog.getResolution());
             } else {
                 // no conflicts in the source tags to resolve. Just apply the tags
                 // to the target primitives
                 //
-                buildChangeCommand(target, tc);
+                buildTags(tc);
             }
         }
 
@@ -184,10 +185,9 @@ public final class PasteTagsAction extends JosmAction {
         /**
          * Replies true if this a heterogeneous source can be pasted without conflict to targets
          *
-         * @param targets the collection of target primitives
          * @return true if this a heterogeneous source can be pasted without conflicts to targets
          */
-        protected boolean canPasteFromHeterogeneousSourceWithoutConflict(Collection<OsmPrimitive> targets) {
+        protected boolean canPasteFromHeterogeneousSourceWithoutConflict() {
             for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
                 if (hasTargetPrimitives(type.getOsmClass())) {
                     TagCollection tc = TagCollection.unionOfAllPrimitives(getSourcePrimitivesByType(type));
@@ -199,14 +199,13 @@ public final class PasteTagsAction extends JosmAction {
         }
 
         /**
-         * Pastes the tags in the current selection of the paste buffer to a set of target
-         * primitives.
+         * Pastes the tags in the current selection of the paste buffer to a set of target primitives.
          */
         protected void pasteFromHeterogeneousSource() {
-            if (canPasteFromHeterogeneousSourceWithoutConflict(target)) {
+            if (canPasteFromHeterogeneousSourceWithoutConflict()) {
                 for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
                     if (hasSourceTagsByType(type) && hasTargetPrimitives(type.getOsmClass())) {
-                        buildChangeCommand(target, getSourceTagsByType(type));
+                        buildTags(getSourceTagsByType(type));
                     }
                 }
             } else {
@@ -223,20 +222,20 @@ public final class PasteTagsAction extends JosmAction {
                     return;
                 for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
                     if (hasSourceTagsByType(type) && hasTargetPrimitives(type.getOsmClass())) {
-                        buildChangeCommand(OsmPrimitive.getFilteredList(target, type.getOsmClass()), dialog.getResolution(type));
+                        buildTags(dialog.getResolution(type));
                     }
                 }
             }
         }
 
         public List<Tag> execute() {
-            commands.clear();
+            tags.clear();
             if (isHeteogeneousSource()) {
                 pasteFromHeterogeneousSource();
             } else {
                 pasteFromHomogeneousSource();
             }
-            return commands;
+            return tags;
         }
 
     }
@@ -304,7 +303,7 @@ public final class PasteTagsAction extends JosmAction {
             String title2 = trn("to {0} object", "to {0} objects", selection.size(), selection.size());
             Main.main.undoRedo.add(
                     new SequenceCommand(
-                            title1 + " " + title2,
+                            title1 + ' ' + title2,
                             commands
                     ));
         }
diff --git a/src/org/openstreetmap/josm/actions/PurgeAction.java b/src/org/openstreetmap/josm/actions/PurgeAction.java
index bde3f96..60bd82f 100644
--- a/src/org/openstreetmap/josm/actions/PurgeAction.java
+++ b/src/org/openstreetmap/josm/actions/PurgeAction.java
@@ -180,8 +180,8 @@ public class PurgeAction extends JosmAction {
              * Add higher level relations (list gets extended while looping over it)
              */
             List<Relation> relLst = new ArrayList<>(relSet);
-            for (int i = 0; i < relLst.size(); ++i) {
-                for (OsmPrimitive parent : relLst.get(i).getReferrers()) {
+            for (Relation r : relLst) {
+                for (OsmPrimitive parent : r.getReferrers()) {
                     if (!(toPurgeChecked.contains(parent))
                             && hasOnlyIncompleteMembers((Relation) parent, toPurgeChecked, relLst)) {
                         relLst.add((Relation) parent);
@@ -309,7 +309,8 @@ public class PurgeAction extends JosmAction {
         setEnabled(selection != null && !selection.isEmpty());
     }
 
-    private boolean hasOnlyIncompleteMembers(Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) {
+    private static boolean hasOnlyIncompleteMembers(
+            Relation r, Collection<OsmPrimitive> toPurge, Collection<? extends OsmPrimitive> moreToPurge) {
         for (RelationMember m : r.getMembers()) {
             if (!m.getMember().isIncomplete() && !toPurge.contains(m.getMember()) && !moreToPurge.contains(m.getMember()))
                 return false;
diff --git a/src/org/openstreetmap/josm/actions/RestartAction.java b/src/org/openstreetmap/josm/actions/RestartAction.java
index 5de9a7a..db81373 100644
--- a/src/org/openstreetmap/josm/actions/RestartAction.java
+++ b/src/org/openstreetmap/josm/actions/RestartAction.java
@@ -157,7 +157,7 @@ public class RestartAction extends JosmAction {
             } else {
                 // else it's a .class, add the classpath and mainClass
                 cmd.add("-cp");
-                cmd.add("\"" + System.getProperty("java.class.path") + "\"");
+                cmd.add('"' + System.getProperty("java.class.path") + '"');
                 cmd.add(mainCommand[0]);
             }
             // add JNLP file.
diff --git a/src/org/openstreetmap/josm/actions/ReverseWayAction.java b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
index 96f7c43..f8521ef 100644
--- a/src/org/openstreetmap/josm/actions/ReverseWayAction.java
+++ b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
@@ -20,12 +20,12 @@ import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.corrector.ReverseWayNoTagCorrector;
 import org.openstreetmap.josm.corrector.ReverseWayTagCorrector;
-import org.openstreetmap.josm.corrector.UserCancelException;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 
 public final class ReverseWayAction extends JosmAction {
@@ -126,17 +126,6 @@ public final class ReverseWayAction extends JosmAction {
         return new ReverseWayResult(wnew, corrCmds, new ChangeCommand(w, wnew));
     }
 
-    protected int getNumWaysInSelection() {
-        if (getCurrentDataSet() == null) return 0;
-        int ret = 0;
-        for (OsmPrimitive primitive : getCurrentDataSet().getSelected()) {
-            if (primitive instanceof Way) {
-                ret++;
-            }
-        }
-        return ret;
-    }
-
     @Override
     protected void updateEnabledState() {
         if (getCurrentDataSet() == null) {
diff --git a/src/org/openstreetmap/josm/actions/SaveActionBase.java b/src/org/openstreetmap/josm/actions/SaveActionBase.java
index 4123720..9d53955 100644
--- a/src/org/openstreetmap/josm/actions/SaveActionBase.java
+++ b/src/org/openstreetmap/josm/actions/SaveActionBase.java
@@ -36,7 +36,7 @@ public abstract class SaveActionBase extends DiskAccessAction {
             return;
         boolean saved = doSave();
         if (saved) {
-            addToFileOpenHistory();
+            addToFileOpenHistory(file);
         }
     }
 
@@ -171,9 +171,9 @@ public abstract class SaveActionBase extends DiskAccessAction {
             // No filefilter accepts current filename, add default extension
             String fn = file.getPath();
             if (ff instanceof ExtensionFileFilter) {
-                fn += "." + ((ExtensionFileFilter) ff).getDefaultExtension();
+                fn += '.' + ((ExtensionFileFilter) ff).getDefaultExtension();
             } else if (extension != null) {
-                fn += "." + extension;
+                fn += '.' + extension;
             }
             file = new File(fn);
             // Confirm overwrite, except for OSX native file dialogs which already ask for confirmation (see #11362)
@@ -198,8 +198,8 @@ public abstract class SaveActionBase extends DiskAccessAction {
         return true;
     }
 
-    protected void addToFileOpenHistory() {
-        String filepath;
+    static void addToFileOpenHistory(File file) {
+        final String filepath;
         try {
             filepath = file.getCanonicalPath();
         } catch (IOException ign) {
diff --git a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
index d3d2a16..8f165ad 100644
--- a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
@@ -80,7 +80,7 @@ public class SearchNotesDownloadAction extends JosmAction {
 
         try {
             final long id = Long.parseLong(searchTerm);
-            new DownloadNotesTask().download(false, id, null);
+            new DownloadNotesTask().download(id, null);
             return;
         } catch (NumberFormatException ignore) {
             if (Main.isTraceEnabled()) {
diff --git a/src/org/openstreetmap/josm/actions/SessionLoadAction.java b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
index 2c6dbbe..6da974b 100644
--- a/src/org/openstreetmap/josm/actions/SessionLoadAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
@@ -114,7 +114,7 @@ public class SessionLoadAction extends DiskAccessAction {
                 public void run() {
                     if (canceled) return;
                     if (!layers.isEmpty()) {
-                        Layer firstLayer = layers.iterator().next();
+                        Layer firstLayer = layers.get(0);
                         boolean noMap = Main.map == null;
                         if (noMap) {
                             Main.main.createMapFrame(firstLayer, viewport);
diff --git a/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java b/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
index 8bea0c6..f5275a0 100644
--- a/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
@@ -40,6 +40,7 @@ import org.openstreetmap.josm.io.session.SessionLayerExporter;
 import org.openstreetmap.josm.io.session.SessionWriter;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.MultiMap;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
 
@@ -57,19 +58,36 @@ public class SessionSaveAsAction extends DiskAccessAction {
      * Constructs a new {@code SessionSaveAsAction}.
      */
     public SessionSaveAsAction() {
-        super(tr("Save Session As..."), "save_as", tr("Save the current session to a new file."), null, true, "save_as-session", true);
+        super(tr("Save Session As..."), "session", tr("Save the current session to a new file."), null, true, "save_as-session", true);
         putValue("help", ht("/Action/SessionSaveAs"));
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
+        try {
+            saveSession();
+        } catch (UserCancelException ignore) {
+            if (Main.isTraceEnabled()) {
+                Main.trace(ignore.getMessage());
+            }
+        }
+    }
+
+    /**
+     * Attempts to save the session.
+     * @throws UserCancelException when the user has cancelled the save process.
+     * @since 8913
+     */
+    public void saveSession() throws UserCancelException {
         if (!isEnabled()) {
             return;
         }
 
         SessionSaveAsDialog dlg = new SessionSaveAsDialog();
         dlg.showDialog();
-        if (dlg.getValue() != 1) return;
+        if (dlg.getValue() != 1) {
+            throw new UserCancelException();
+        }
 
         boolean zipRequired = false;
         for (Layer l : layers) {
@@ -92,8 +110,9 @@ public class SessionSaveAsAction extends DiskAccessAction {
                     JFileChooser.FILES_ONLY, "lastDirectory");
         }
 
-        if (fc == null)
-            return;
+        if (fc == null) {
+            throw new UserCancelException();
+        }
 
         File file = fc.getSelectedFile();
         String fn = file.getName();
@@ -115,8 +134,9 @@ public class SessionSaveAsAction extends DiskAccessAction {
         }
         if (fn.indexOf('.') == -1) {
             file = new File(file.getPath() + (zip ? ".joz" : ".jos"));
-            if (!SaveActionBase.confirmOverwrite(file))
-                return;
+            if (!SaveActionBase.confirmOverwrite(file)) {
+                throw new UserCancelException();
+            }
         }
 
         List<Layer> layersOut = new ArrayList<>();
@@ -135,6 +155,7 @@ public class SessionSaveAsAction extends DiskAccessAction {
         SessionWriter sw = new SessionWriter(layersOut, active, exporters, dependencies, zip);
         try {
             sw.write(file);
+            SaveActionBase.addToFileOpenHistory(file);
         } catch (IOException ex) {
             Main.error(ex);
             HelpAwareOptionPane.showMessageDialogInEDT(
diff --git a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
index 107c7e5..0161647 100644
--- a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
+++ b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
@@ -59,7 +59,7 @@ public final class ShowStatusReportAction extends JosmAction {
 
     private static void shortenParam(ListIterator<String> it, String[] param, String source, String target) {
         if (source != null && target.length() < source.length() && param[1].startsWith(source)) {
-            it.set(param[0] + "=" + param[1].replace(source, target));
+            it.set(param[0] + '=' + param[1].replace(source, target));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/SplitWayAction.java b/src/org/openstreetmap/josm/actions/SplitWayAction.java
index 2fd7f2f..fd6cb67 100644
--- a/src/org/openstreetmap/josm/actions/SplitWayAction.java
+++ b/src/org/openstreetmap/josm/actions/SplitWayAction.java
@@ -5,6 +5,8 @@ import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.awt.Component;
+import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
@@ -17,7 +19,14 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
 import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
@@ -30,11 +39,15 @@ import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Splits a way into multiple ways (all identical except for their node list).
@@ -53,8 +66,8 @@ public class SplitWayAction extends JosmAction {
     public static class SplitWayResult {
         private final Command command;
         private final List<? extends PrimitiveId> newSelection;
-        private Way originalWay;
-        private List<Way> newWays;
+        private final Way originalWay;
+        private final List<Way> newWays;
 
         /**
          * @param command The command to be performed to split the way (which is saved for later retrieval with {@link #getCommand})
@@ -175,21 +188,164 @@ public class SplitWayAction extends JosmAction {
         }
 
         // Finally, applicableWays contains only one perfect way
-        Way selectedWay = applicableWays.get(0);
-
-        List<List<Node>> wayChunks = buildSplitChunks(selectedWay, selectedNodes);
+        final Way selectedWay = applicableWays.get(0);
+        final List<List<Node>> wayChunks = buildSplitChunks(selectedWay, selectedNodes);
         if (wayChunks != null) {
-            List<OsmPrimitive> sel = new ArrayList<>(selectedWays.size() + selectedRelations.size());
+            final List<OsmPrimitive> sel = new ArrayList<>(selectedWays.size() + selectedRelations.size());
             sel.addAll(selectedWays);
             sel.addAll(selectedRelations);
-            SplitWayResult result = splitWay(getEditLayer(), selectedWay, wayChunks, sel);
-            Main.main.undoRedo.add(result.getCommand());
-            getCurrentDataSet().setSelected(result.getNewSelection());
+
+            final List<Way> newWays = createNewWaysFromChunks(selectedWay, wayChunks);
+            final Way wayToKeep = Strategy.keepLongestChunk().determineWayToKeep(newWays);
+
+            if (ExpertToggleAction.isExpert() && !selectedWay.isNew() && Main.pref.getBoolean("splitway.segment-selection-dialog", true)) {
+                final ExtendedDialog dialog = new SegmentToKeepSelectionDialog(selectedWay, newWays, wayToKeep, sel);
+                dialog.setModal(false);
+                dialog.showDialog();
+            } else {
+                final SplitWayResult result = doSplitWay(getEditLayer(), selectedWay, wayToKeep, newWays, sel);
+                Main.main.undoRedo.add(result.getCommand());
+                getCurrentDataSet().setSelected(result.getNewSelection());
+            }
+        }
+    }
+
+    /**
+     * A dialog to query which way segment should reuse the history of the way to split.
+     */
+    static class SegmentToKeepSelectionDialog extends ExtendedDialog {
+        final Way selectedWay;
+        final List<Way> newWays;
+        final JList<Way> list;
+        final List<OsmPrimitive> selection;
+
+        SegmentToKeepSelectionDialog(Way selectedWay, List<Way> newWays, Way wayToKeep, List<OsmPrimitive> selection) {
+            super(Main.parent, tr("Which way segment should reuse the history of {0}?", selectedWay.getId()),
+                    new String[]{tr("Ok"), tr("Cancel")}, true);
+
+            this.selectedWay = selectedWay;
+            this.newWays = newWays;
+            this.selection = selection;
+            this.list = new JList<>(newWays.toArray(new Way[newWays.size()]));
+            buildList();
+            this.list.setSelectedValue(wayToKeep, true);
+
+            setButtonIcons(new String[]{"ok", "cancel"});
+            final JPanel pane = new JPanel(new GridBagLayout());
+            pane.add(new JLabel(getTitle()), GBC.eol().fill(GBC.HORIZONTAL));
+            pane.add(list, GBC.eop().fill(GBC.HORIZONTAL));
+            setContent(pane);
+        }
+
+        private void buildList() {
+            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+            list.addListSelectionListener(new ListSelectionListener() {
+                @Override
+                public void valueChanged(ListSelectionEvent e) {
+                    final Way selected = list.getSelectedValue();
+                    if (Main.isDisplayingMapView() && selected != null) {
+                        final List<WaySegment> segments = Utils.transform(selected.getNodes().subList(0, selected.getNodesCount() - 1),
+                                new Utils.Function<Node, WaySegment>() {
+                            @Override
+                            public WaySegment apply(Node x) {
+                                return new WaySegment(selectedWay, selectedWay.getNodes().indexOf(x));
+                            }
+                        });
+                        setHighlightedWaySegments(segments);
+                    }
+                }
+            });
+            list.setCellRenderer(new DefaultListCellRenderer() {
+                @Override
+                public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+                    final Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+                    final String name = DefaultNameFormatter.getInstance().format((Way) value);
+                    // get rid of id from DefaultNameFormatter.decorateNameWithId()
+                    final String nameWithoutId = name
+                            .replace(tr(" [id: {0}]", ((Way) value).getId()), "")
+                            .replace(tr(" [id: {0}]", ((Way) value).getUniqueId()), "");
+                    ((JLabel) c).setText(tr("Segment {0}: {1}", index + 1, nameWithoutId));
+                    return c;
+                }
+            });
+        }
+
+        protected void setHighlightedWaySegments(Collection<WaySegment> segments) {
+            selectedWay.getDataSet().setHighlightedWaySegments(segments);
+            Main.map.mapView.repaint();
+        }
+
+        @Override
+        public void setVisible(boolean visible) {
+            super.setVisible(visible);
+            if (visible) {
+                list.setSelectedIndex(list.getSelectedIndex()); // highlight way segments
+            } else {
+                setHighlightedWaySegments(Collections.<WaySegment>emptyList());
+            }
+        }
+
+        @Override
+        protected void buttonAction(int buttonIndex, ActionEvent evt) {
+            super.buttonAction(buttonIndex, evt);
+            if (getValue() == 1) {
+                final Way wayToKeep = list.getSelectedValue();
+                final SplitWayResult result = doSplitWay(getEditLayer(), selectedWay, wayToKeep, newWays, selection);
+                Main.main.undoRedo.add(result.getCommand());
+                getCurrentDataSet().setSelected(result.getNewSelection());
+            }
         }
     }
 
     /**
-     * Determine witch ways to split.
+     * Determines which way chunk should reuse the old id and its history
+     *
+     * @since 8954
+     */
+    public abstract static class Strategy {
+
+        /**
+         * Determines which way chunk should reuse the old id and its history.
+         *
+         * @param wayChunks the way chunks
+         * @return the way to keep
+         */
+        public abstract Way determineWayToKeep(Iterable<Way> wayChunks);
+
+        /**
+         * Returns a strategy which selects the way chunk with the highest node count to keep.
+         */
+        public static Strategy keepLongestChunk() {
+            return new Strategy() {
+                @Override
+                public Way determineWayToKeep(Iterable<Way> wayChunks) {
+                    Way wayToKeep = null;
+                    for (Way i : wayChunks) {
+                        if (wayToKeep == null || i.getNodesCount() > wayToKeep.getNodesCount()) {
+                            wayToKeep = i;
+                        }
+                    }
+                    return wayToKeep;
+                }
+            };
+        }
+
+        /**
+         * Returns a strategy which selects the first way chunk.
+         */
+        public static Strategy keepFirstChunk() {
+            return new Strategy() {
+                @Override
+                public Way determineWayToKeep(Iterable<Way> wayChunks) {
+                    return wayChunks.iterator().next();
+                }
+            };
+        }
+    }
+
+
+    /**
+     * Determine which ways to split.
      * @param selectedWays List of user selected ways.
      * @param selectedNodes List of user selected nodes.
      * @return List of ways to split
@@ -328,6 +484,23 @@ public class SplitWayAction extends JosmAction {
     }
 
     /**
+     * Creates new way objects for the way chunks and transfers the keys from the original way.
+     * @param way the original way whose  keys are transferred
+     * @param wayChunks the way chunks
+     * @return the new way objects
+     */
+    protected static List<Way> createNewWaysFromChunks(Way way, Iterable<List<Node>> wayChunks) {
+        final List<Way> newWays = new ArrayList<>();
+        for (List<Node> wayChunk : wayChunks) {
+            Way wayToAdd = new Way();
+            wayToAdd.setKeys(way.getKeys());
+            wayToAdd.setNodes(wayChunk);
+            newWays.add(wayToAdd);
+        }
+        return newWays;
+    }
+
+    /**
      * Splits the way {@code way} into chunks of {@code wayChunks} and replies
      * the result of this process in an instance of {@link SplitWayResult}.
      *
@@ -343,33 +516,63 @@ public class SplitWayAction extends JosmAction {
      */
     public static SplitWayResult splitWay(OsmDataLayer layer, Way way, List<List<Node>> wayChunks,
             Collection<? extends OsmPrimitive> selection) {
+        return splitWay(layer, way, wayChunks, selection, Strategy.keepLongestChunk());
+    }
+
+    /**
+     * Splits the way {@code way} into chunks of {@code wayChunks} and replies
+     * the result of this process in an instance of {@link SplitWayResult}.
+     * The {@link org.openstreetmap.josm.actions.SplitWayAction.Strategy} is used to determine which
+     * way chunk should reuse the old id and its history.
+     *
+     * Note that changes are not applied to the data yet. You have to
+     * submit the command in {@link SplitWayResult#getCommand()} first,
+     * i.e. {@code Main.main.undoredo.add(result.getCommand())}.
+     *
+     * @param layer the layer which the way belongs to. Must not be null.
+     * @param way the way to split. Must not be null.
+     * @param wayChunks the list of way chunks into the way is split. Must not be null.
+     * @param selection The list of currently selected primitives
+     * @param splitStrategy The strategy used to determine which way chunk should reuse the old id and its history
+     * @return the result from the split operation
+     * @since 8954
+     */
+    public static SplitWayResult splitWay(OsmDataLayer layer, Way way, List<List<Node>> wayChunks,
+            Collection<? extends OsmPrimitive> selection, Strategy splitStrategy) {
         // build a list of commands, and also a new selection list
-        Collection<Command> commandList = new ArrayList<>(wayChunks.size());
-        List<OsmPrimitive> newSelection = new ArrayList<>(selection.size() + wayChunks.size());
+        final List<OsmPrimitive> newSelection = new ArrayList<>(selection.size() + wayChunks.size());
         newSelection.addAll(selection);
 
-        Iterator<List<Node>> chunkIt = wayChunks.iterator();
+        // Create all potential new ways
+        final List<Way> newWays = createNewWaysFromChunks(way, wayChunks);
+
+        // Determine which part reuses the existing way
+        final Way wayToKeep = splitStrategy.determineWayToKeep(newWays);
+
+        return doSplitWay(layer, way, wayToKeep, newWays, newSelection);
+    }
+
+    static SplitWayResult doSplitWay(OsmDataLayer layer, Way way, Way wayToKeep, List<Way> newWays,
+                                   List<OsmPrimitive> newSelection) {
+
+        Collection<Command> commandList = new ArrayList<>(newWays.size());
         Collection<String> nowarnroles = Main.pref.getCollection("way.split.roles.nowarn",
                 Arrays.asList("outer", "inner", "forward", "backward", "north", "south", "east", "west"));
 
-        // First, change the original way
-        Way changedWay = new Way(way);
-        changedWay.setNodes(chunkIt.next());
+        // Change the original way
+        final Way changedWay = new Way(way);
+        changedWay.setNodes(wayToKeep.getNodes());
         commandList.add(new ChangeCommand(way, changedWay));
         if (!newSelection.contains(way)) {
             newSelection.add(way);
         }
+        newWays.remove(wayToKeep);
 
-        List<Way> newWays = new ArrayList<>();
-        // Second, create new ways
-        while (chunkIt.hasNext()) {
-            Way wayToAdd = new Way();
-            wayToAdd.setKeys(way.getKeys());
-            newWays.add(wayToAdd);
-            wayToAdd.setNodes(chunkIt.next());
+        for (Way wayToAdd : newWays) {
             commandList.add(new AddCommand(layer, wayToAdd));
             newSelection.add(wayToAdd);
         }
+
         boolean warnmerole = false;
         boolean warnme = false;
         // now copy all relations to new way also
@@ -454,18 +657,18 @@ public class SplitWayAction extends JosmAction {
                             if ((i_r - k >= 0) && relationMembers.get(i_r - k).isWay()) {
                                 Way w = relationMembers.get(i_r - k).getWay();
                                 if ((w.lastNode() == way.firstNode()) || w.firstNode() == way.firstNode()) {
-                                    backwards = false;
+                                    backwards = Boolean.FALSE;
                                 } else if ((w.firstNode() == way.lastNode()) || w.lastNode() == way.lastNode()) {
-                                    backwards = true;
+                                    backwards = Boolean.TRUE;
                                 }
                                 break;
                             }
                             if ((i_r + k < relationMembers.size()) && relationMembers.get(i_r + k).isWay()) {
                                 Way w = relationMembers.get(i_r + k).getWay();
                                 if ((w.lastNode() == way.firstNode()) || w.firstNode() == way.firstNode()) {
-                                    backwards = true;
+                                    backwards = Boolean.TRUE;
                                 } else if ((w.firstNode() == way.lastNode()) || w.lastNode() == way.lastNode()) {
-                                    backwards = false;
+                                    backwards = Boolean.FALSE;
                                 }
                                 break;
                             }
@@ -508,8 +711,8 @@ public class SplitWayAction extends JosmAction {
         return new SplitWayResult(
                 new SequenceCommand(
                         /* for correct i18n of plural forms - see #9110 */
-                        trn("Split way {0} into {1} part", "Split way {0} into {1} parts", wayChunks.size(),
-                                way.getDisplayName(DefaultNameFormatter.getInstance()), wayChunks.size()),
+                        trn("Split way {0} into {1} part", "Split way {0} into {1} parts", newWays.size(),
+                                way.getDisplayName(DefaultNameFormatter.getInstance()), newWays.size()),
                         commandList
                         ),
                         newSelection,
diff --git a/src/org/openstreetmap/josm/actions/UnGlueAction.java b/src/org/openstreetmap/josm/actions/UnGlueAction.java
index dce5cb6..2198c7e 100644
--- a/src/org/openstreetmap/josm/actions/UnGlueAction.java
+++ b/src/org/openstreetmap/josm/actions/UnGlueAction.java
@@ -134,15 +134,15 @@ public class UnGlueAction extends JosmAction {
         } else {
             errorTime = Notification.TIME_VERY_LONG;
             errMsg =
-                tr("The current selection cannot be used for unglueing.")+"\n"+
-                "\n"+
-                tr("Select either:")+"\n"+
-                tr("* One tagged node, or")+"\n"+
-                tr("* One node that is used by more than one way, or")+"\n"+
-                tr("* One node that is used by more than one way and one of those ways, or")+"\n"+
-                tr("* One way that has one or more nodes that are used by more than one way, or")+"\n"+
-                tr("* One way and one or more of its nodes that are used by more than one way.")+"\n"+
-                "\n"+
+                tr("The current selection cannot be used for unglueing.")+'\n'+
+                '\n'+
+                tr("Select either:")+'\n'+
+                tr("* One tagged node, or")+'\n'+
+                tr("* One node that is used by more than one way, or")+'\n'+
+                tr("* One node that is used by more than one way and one of those ways, or")+'\n'+
+                tr("* One way that has one or more nodes that are used by more than one way, or")+'\n'+
+                tr("* One way and one or more of its nodes that are used by more than one way.")+'\n'+
+                '\n'+
                 tr("Note: If a way is selected, this way will get fresh copies of the unglued\n"+
                         "nodes and the new nodes will be selected. Otherwise, all ways will get their\n"+
                 "own copy and all nodes will be selected.");
@@ -224,6 +224,7 @@ public class UnGlueAction extends JosmAction {
      *
      * The way will be put into the object variable "selectedWay", the
      * node into "selectedNode".
+     * @return true if either one node is selected or one node and one way are selected and the node is part of the way
      */
     private boolean checkSelection(Collection<? extends OsmPrimitive> selection) {
 
@@ -259,6 +260,7 @@ public class UnGlueAction extends JosmAction {
      *
      * The way will be put into the object variable "selectedWay", the
      * nodes into "selectedNodes".
+     * @return true if one way and any number of nodes that are part of that way are selected
      */
     private boolean checkSelection2(Collection<? extends OsmPrimitive> selection) {
         if (selection.isEmpty())
@@ -301,8 +303,9 @@ public class UnGlueAction extends JosmAction {
      * <li>the add-node command will be put into the parameter cmds.</li>
      * <li>the changed way will be returned and must be put into cmds by the caller!</li>
      * </ul>
+     * @return new way
      */
-    private Way modifyWay(Node originalNode, Way w, List<Command> cmds, List<Node> newNodes) {
+    private static Way modifyWay(Node originalNode, Way w, List<Command> cmds, List<Node> newNodes) {
         // clone the node for the way
         Node newNode = new Node(originalNode, true /* clear OSM ID */);
         newNodes.add(newNode);
@@ -395,7 +398,7 @@ public class UnGlueAction extends JosmAction {
      * @param cmds Commands to execute
      * @param newNodes New created nodes by this set of command
      */
-    private void execCommands(List<Command> cmds, List<Node> newNodes) {
+    private static void execCommands(List<Command> cmds, List<Node> newNodes) {
         Main.main.undoRedo.add(new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
                 trn("Dupe into {0} node", "Dupe into {0} nodes", newNodes.size() + 1, newNodes.size() + 1), cmds));
         // select one of the new nodes
diff --git a/src/org/openstreetmap/josm/actions/UploadAction.java b/src/org/openstreetmap/josm/actions/UploadAction.java
index 99b7807..382cf43 100644
--- a/src/org/openstreetmap/josm/actions/UploadAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadAction.java
@@ -162,8 +162,9 @@ public class UploadAction extends JosmAction{
     }
 
     /**
-     * returns true if the user wants to cancel, false if they
-     * want to continue
+     * Warn user about discouraged upload, propose to cancel operation.
+     * @param layer incriminated layer
+     * @return true if the user wants to cancel, false if they want to continue
      */
     public static boolean warnUploadDiscouraged(AbstractModifiableLayer layer) {
         return GuiHelper.warnUser(tr("Upload discouraged"),
diff --git a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
index d1c7b9f..1f9020f 100644
--- a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
@@ -192,7 +192,7 @@ public class UploadSelectionAction extends JosmAction {
     static class UploadHullBuilder implements Visitor {
         private Set<OsmPrimitive> hull;
 
-        public UploadHullBuilder() {
+        UploadHullBuilder() {
             hull = new HashSet<>();
         }
 
@@ -268,7 +268,7 @@ public class UploadSelectionAction extends JosmAction {
          * @param layer the data layer for which a collection of selected primitives is uploaded
          * @param toUpload the collection of primitives to upload
          */
-        public DeletedParentsChecker(OsmDataLayer layer, Collection<OsmPrimitive> toUpload) {
+        DeletedParentsChecker(OsmDataLayer layer, Collection<OsmPrimitive> toUpload) {
             super(tr("Checking parents for deleted objects"));
             this.toUpload = toUpload;
             this.layer = layer;
diff --git a/src/org/openstreetmap/josm/actions/ValidateAction.java b/src/org/openstreetmap/josm/actions/ValidateAction.java
index b8b5e74..c907422 100644
--- a/src/org/openstreetmap/josm/actions/ValidateAction.java
+++ b/src/org/openstreetmap/josm/actions/ValidateAction.java
@@ -47,7 +47,7 @@ public class ValidateAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent ev) {
-        doValidate(ev, true);
+        doValidate(true);
     }
 
     /**
@@ -57,10 +57,9 @@ public class ValidateAction extends JosmAction {
      * is selected) are validated. If it is false, last selected items are
      * revalidated
      *
-     * @param ev The event
      * @param getSelectedItems If selected or last selected items must be validated
      */
-    public void doValidate(ActionEvent ev, boolean getSelectedItems) {
+    public void doValidate(boolean getSelectedItems) {
         if (Main.map == null || !Main.map.isVisible())
             return;
 
@@ -123,7 +122,7 @@ public class ValidateAction extends JosmAction {
          * @param validatedPrimitives the collection of primitives to validate.
          * @param formerValidatedPrimitives the last collection of primitives being validates. May be null.
          */
-        public ValidationTask(Collection<Test> tests, Collection<OsmPrimitive> validatedPrimitives,
+        ValidationTask(Collection<Test> tests, Collection<OsmPrimitive> validatedPrimitives,
                 Collection<OsmPrimitive> formerValidatedPrimitives) {
             super(tr("Validating"), false /*don't ignore exceptions */);
             this.validatedPrimitives  = validatedPrimitives;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
index 01ab834..de5e67a 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractDownloadTask.java
@@ -8,12 +8,14 @@ import org.openstreetmap.josm.io.XmlWriter;
 
 /**
  * Common abstract implementation of other download tasks
+ * @param <T> The downloaded data type
  * @since 2322
  */
-public abstract class AbstractDownloadTask implements DownloadTask {
+public abstract class AbstractDownloadTask<T> implements DownloadTask {
     private List<Object> errorMessages;
-    private boolean canceled = false;
-    private boolean failed = false;
+    private boolean canceled;
+    private boolean failed;
+    protected T downloadedData;
 
     public AbstractDownloadTask() {
         errorMessages = new ArrayList<>();
@@ -35,14 +37,26 @@ public abstract class AbstractDownloadTask implements DownloadTask {
         this.failed = failed;
     }
 
-    protected void rememberErrorMessage(String message) {
+    protected final void rememberErrorMessage(String message) {
         errorMessages.add(message);
     }
 
-    protected void rememberException(Exception exception) {
+    protected final void rememberException(Exception exception) {
         errorMessages.add(exception);
     }
 
+    protected final void rememberDownloadedData(T data) {
+        this.downloadedData = data;
+    }
+
+    /**
+     * Replies the downloaded data.
+     * @return The downloaded data.
+     */
+    public final T getDownloadedData() {
+        return downloadedData;
+    }
+
     @Override
     public List<Object> getErrorObjects() {
         return errorMessages;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
index 07fa832..5727d0f 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
@@ -32,7 +32,7 @@ import org.xml.sax.SAXException;
 /**
  * Task allowing to download GPS data.
  */
-public class DownloadGpsTask extends AbstractDownloadTask {
+public class DownloadGpsTask extends AbstractDownloadTask<GpxData> {
 
     private DownloadTask downloadTask;
 
@@ -43,7 +43,7 @@ public class DownloadGpsTask extends AbstractDownloadTask {
     private static final String PATTERN_EXTERNAL_GPX_SCRIPT = "https?://.*exportgpx.*";
     private static final String PATTERN_EXTERNAL_GPX_FILE = "https?://.*/(.*\\.gpx)";
 
-    protected String newLayerName = null;
+    protected String newLayerName;
 
     @Override
     public String[] getPatterns() {
@@ -101,7 +101,7 @@ public class DownloadGpsTask extends AbstractDownloadTask {
         private GpxData rawData;
         private final boolean newLayer;
 
-        public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
+        DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
             super(tr("Downloading GPS data"), progressMonitor, false);
             this.reader = reader;
             this.newLayer = newLayer;
@@ -127,6 +127,7 @@ public class DownloadGpsTask extends AbstractDownloadTask {
 
         @Override
         protected void finish() {
+            rememberDownloadedData(rawData);
             if (isCanceled() || isFailed())
                 return;
             if (rawData == null)
@@ -145,11 +146,15 @@ public class DownloadGpsTask extends AbstractDownloadTask {
         private <L extends Layer> L addOrMergeLayer(L layer, L mergeLayer) {
             if (layer == null) return null;
             if (newLayer || mergeLayer == null) {
-                Main.main.addLayer(layer);
+                if (Main.main != null) {
+                    Main.main.addLayer(layer);
+                }
                 return layer;
             } else {
                 mergeLayer.mergeFrom(layer);
-                Main.map.repaint();
+                if (Main.map != null) {
+                    Main.map.repaint();
+                }
                 return mergeLayer;
             }
         }
@@ -178,7 +183,8 @@ public class DownloadGpsTask extends AbstractDownloadTask {
             return null;
         }
 
-        @Override protected void cancel() {
+        @Override
+        protected void cancel() {
             setCanceled(true);
             if (reader != null) {
                 reader.cancel();
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
index adc2ba2..d4fb9ef 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java
@@ -14,6 +14,7 @@ import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.notes.Note;
+import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.NoteLayer;
@@ -26,7 +27,7 @@ import org.openstreetmap.josm.io.OsmTransferException;
 import org.xml.sax.SAXException;
 
 /** Task for downloading notes */
-public class DownloadNotesTask extends AbstractDownloadTask {
+public class DownloadNotesTask extends AbstractDownloadTask<NoteData> {
 
     private static final String PATTERN_API_URL = "https?://.*/api/0.6/notes.*";
     private static final String PATTERN_DUMP_FILE = "https?://.*/(.*\\.osn(.bz2)?)";
@@ -37,7 +38,13 @@ public class DownloadNotesTask extends AbstractDownloadTask {
 
     private DownloadTask downloadTask;
 
-    public Future<?> download(boolean newLayer, long id, ProgressMonitor progressMonitor) {
+    /**
+     * Download a specific note by its id.
+     * @param id Note identifier
+     * @param progressMonitor progress monitor
+     * @return the future representing the asynchronous task
+     */
+    public Future<?> download(long id, ProgressMonitor progressMonitor) {
         final String url = OsmApi.getOsmApi().getBaseUrl() + "notes/" + id;
         downloadTask = new DownloadRawUrlTask(new OsmServerLocationReader(url), progressMonitor);
         return Main.worker.submit(downloadTask);
@@ -90,13 +97,14 @@ public class DownloadNotesTask extends AbstractDownloadTask {
         protected OsmServerReader reader;
         protected List<Note> notesData;
 
-        public DownloadTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
+        DownloadTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
             super(tr("Downloading Notes"), progressMonitor, false);
             this.reader = reader;
         }
 
         @Override
         protected void finish() {
+            rememberDownloadedData(new NoteData(notesData));
             if (isCanceled() || isFailed()) {
                 return;
             }
@@ -136,7 +144,7 @@ public class DownloadNotesTask extends AbstractDownloadTask {
 
     class DownloadBoundingBoxTask extends DownloadTask {
 
-        public DownloadBoundingBoxTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
+        DownloadBoundingBoxTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
             super(reader, progressMonitor);
         }
 
@@ -172,7 +180,7 @@ public class DownloadNotesTask extends AbstractDownloadTask {
 
     class DownloadRawUrlTask extends DownloadTask {
 
-        public DownloadRawUrlTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
+        DownloadRawUrlTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
             super(reader, progressMonitor);
         }
 
@@ -198,7 +206,7 @@ public class DownloadNotesTask extends AbstractDownloadTask {
 
     class DownloadBzip2RawUrlTask extends DownloadTask {
 
-        public DownloadBzip2RawUrlTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
+        DownloadBzip2RawUrlTask(OsmServerReader reader, ProgressMonitor progressMonitor) {
             super(reader, progressMonitor);
         }
 
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesUrlIdTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesUrlIdTask.java
index 544c31d..95132f0 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesUrlIdTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesUrlIdTask.java
@@ -17,7 +17,7 @@ public class DownloadNotesUrlIdTask extends DownloadNotesTask {
     public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
         final Matcher matcher = Pattern.compile(URL_ID_PATTERN).matcher(url);
         if (matcher.matches()) {
-            return download(newLayer, Long.parseLong(matcher.group(2)), null);
+            return download(Long.parseLong(matcher.group(2)), null);
         } else {
             throw new IllegalStateException("Failed to parse note id from " + url);
         }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
index 7f5972d..e08998b 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
@@ -35,7 +35,7 @@ import org.xml.sax.SAXException;
  * Open the download dialog and download the data.
  * Run in the worker thread.
  */
-public class DownloadOsmTask extends AbstractDownloadTask {
+public class DownloadOsmTask extends AbstractDownloadTask<DataSet> {
 
     protected static final String PATTERN_OSM_API_URL           = "https?://.*/api/0.6/(map|nodes?|ways?|relations?|\\*).*";
     protected static final String PATTERN_OVERPASS_API_URL      = "https?://.*/interpreter\\?data=.*";
@@ -43,10 +43,12 @@ public class DownloadOsmTask extends AbstractDownloadTask {
     protected static final String PATTERN_EXTERNAL_OSM_FILE     = "https?://.*/.*\\.osm";
 
     protected Bounds currentBounds;
-    protected DataSet downloadedData;
     protected DownloadTask downloadTask;
 
-    protected String newLayerName = null;
+    protected String newLayerName;
+
+    /** This allows subclasses to ignore this warning */
+    protected boolean warnAboutEmptyArea = true;
 
     @Override
     public String[] getPatterns() {
@@ -67,18 +69,6 @@ public class DownloadOsmTask extends AbstractDownloadTask {
         }
     }
 
-    protected void rememberDownloadedData(DataSet ds) {
-        this.downloadedData = ds;
-    }
-
-    /**
-     * Replies the {@link DataSet} containing the downloaded OSM data.
-     * @return The {@link DataSet} containing the downloaded OSM data.
-     */
-    public DataSet getDownloadedData() {
-        return downloadedData;
-    }
-
     @Override
     public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
         return download(new BoundingBoxDownloader(downloadArea), newLayer, downloadArea, progressMonitor);
@@ -135,6 +125,8 @@ public class DownloadOsmTask extends AbstractDownloadTask {
 
     /**
      * This allows subclasses to perform operations on the URL before {@link #loadUrl} is performed.
+     * @param url the original URL
+     * @return the modified URL
      */
     protected String modifyUrlBeforeLoad(String url) {
         return url;
@@ -142,18 +134,18 @@ public class DownloadOsmTask extends AbstractDownloadTask {
 
     /**
      * Loads a given URL from the OSM Server
-     * @param new_layer True if the data should be saved to a new layer
+     * @param newLayer True if the data should be saved to a new layer
      * @param url The URL as String
      */
     @Override
-    public Future<?> loadUrl(boolean new_layer, String url, ProgressMonitor progressMonitor) {
-        url = modifyUrlBeforeLoad(url);
-        downloadTask = new DownloadTask(new_layer,
-                new OsmServerLocationReader(url),
+    public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
+        String newUrl = modifyUrlBeforeLoad(url);
+        downloadTask = new DownloadTask(newLayer,
+                new OsmServerLocationReader(newUrl),
                 progressMonitor);
         currentBounds = null;
         // Extract .osm filename from URL to set the new layer name
-        extractOsmFilename("https?://.*/(.*\\.osm)", url);
+        extractOsmFilename("https?://.*/(.*\\.osm)", newUrl);
         return Main.worker.submit(downloadTask);
     }
 
@@ -181,6 +173,7 @@ public class DownloadOsmTask extends AbstractDownloadTask {
     public abstract static class AbstractInternalTask extends PleaseWaitRunnable {
 
         protected final boolean newLayer;
+        protected final boolean zoomAfterDownload;
         protected DataSet dataSet;
 
         /**
@@ -191,10 +184,12 @@ public class DownloadOsmTask extends AbstractDownloadTask {
          * @param ignoreException If true, exception will be propagated to calling code. If false then
          * exception will be thrown directly in EDT. When this runnable is executed using executor framework
          * then use false unless you read result of task (because exception will get lost if you don't)
+         * @param zoomAfterDownload If true, the map view will zoom to download area after download
          */
-        public AbstractInternalTask(boolean newLayer, String title, boolean ignoreException) {
+        public AbstractInternalTask(boolean newLayer, String title, boolean ignoreException, boolean zoomAfterDownload) {
             super(title, ignoreException);
             this.newLayer = newLayer;
+            this.zoomAfterDownload = zoomAfterDownload;
         }
 
         /**
@@ -206,10 +201,13 @@ public class DownloadOsmTask extends AbstractDownloadTask {
          * @param ignoreException If true, exception will be propagated to calling code. If false then
          * exception will be thrown directly in EDT. When this runnable is executed using executor framework
          * then use false unless you read result of task (because exception will get lost if you don't)
+         * @param zoomAfterDownload If true, the map view will zoom to download area after download
          */
-        public AbstractInternalTask(boolean newLayer, String title, ProgressMonitor progressMonitor, boolean ignoreException) {
+        public AbstractInternalTask(boolean newLayer, String title, ProgressMonitor progressMonitor, boolean ignoreException,
+                boolean zoomAfterDownload) {
             super(title, progressMonitor, ignoreException);
             this.newLayer = newLayer;
+            this.zoomAfterDownload = zoomAfterDownload;
         }
 
         protected OsmDataLayer getEditLayer() {
@@ -218,8 +216,8 @@ public class DownloadOsmTask extends AbstractDownloadTask {
         }
 
         protected int getNumDataLayers() {
-            int count = 0;
             if (!Main.isDisplayingMapView()) return 0;
+            int count = 0;
             Collection<Layer> layers = Main.map.mapView.getAllLayers();
             for (Layer layer : layers) {
                 if (layer instanceof OsmDataLayer) {
@@ -288,7 +286,9 @@ public class DownloadOsmTask extends AbstractDownloadTask {
                     layer = getFirstDataLayer();
                 }
                 layer.mergeFrom(dataSet);
-                computeBboxAndCenterScale(bounds);
+                if (zoomAfterDownload) {
+                    computeBboxAndCenterScale(bounds);
+                }
                 layer.onPostDownloadFromServer();
             }
         }
@@ -297,8 +297,26 @@ public class DownloadOsmTask extends AbstractDownloadTask {
     protected class DownloadTask extends AbstractInternalTask {
         protected final OsmServerReader reader;
 
+        /**
+         * Constructs a new {@code DownloadTask}.
+         * @param newLayer if {@code true}, force download to a new layer
+         * @param reader OSM data reader
+         * @param progressMonitor progress monitor
+         */
         public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
-            super(newLayer, tr("Downloading data"), progressMonitor, false);
+            this(newLayer, reader, progressMonitor, true);
+        }
+
+        /**
+         * Constructs a new {@code DownloadTask}.
+         * @param newLayer if {@code true}, force download to a new layer
+         * @param reader OSM data reader
+         * @param progressMonitor progress monitor
+         * @param zoomAfterDownload If true, the map view will zoom to download area after download
+         * @since 8942
+         */
+        public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor, boolean zoomAfterDownload) {
+            super(newLayer, tr("Downloading data"), progressMonitor, false, zoomAfterDownload);
             this.reader = reader;
         }
 
@@ -336,7 +354,9 @@ public class DownloadOsmTask extends AbstractDownloadTask {
             if (dataSet == null)
                 return; // user canceled download or error occurred
             if (dataSet.allPrimitives().isEmpty()) {
-                rememberErrorMessage(tr("No data found in this area."));
+                if (warnAboutEmptyArea) {
+                    rememberErrorMessage(tr("No data found in this area."));
+                }
                 // need to synthesize a download bounds lest the visual indication of downloaded area doesn't work
                 dataSet.dataSources.add(new DataSource(currentBounds != null ? currentBounds :
                     new Bounds(new LatLon(0, 0)), "OpenStreetMap server"));
@@ -362,7 +382,7 @@ public class DownloadOsmTask extends AbstractDownloadTask {
             if (urlString.matches(PATTERN_OSM_API_URL)) {
                 // TODO: proper i18n after stabilization
                 Collection<String> items = new ArrayList<>();
-                items.add(tr("OSM Server URL:") + " " + url.getHost());
+                items.add(tr("OSM Server URL:") + ' ' + url.getHost());
                 items.add(tr("Command")+": "+url.getPath());
                 if (url.getQuery() != null) {
                     items.add(tr("Request details: {0}", url.getQuery().replaceAll(",\\s*", ", ")));
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
index a7630d0..74a1173 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java
@@ -18,7 +18,7 @@ import org.openstreetmap.josm.tools.Utils;
  * Task allowing to download JOSM session (*.jos, *.joz file).
  * @since 6215
  */
-public class DownloadSessionTask extends AbstractDownloadTask {
+public class DownloadSessionTask extends AbstractDownloadTask<Object> {
 
     private static final String PATTERN_SESSION =  "https?://.*/.*\\.jo(s|z)";
 
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
index dc36687..49a9c92 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
@@ -231,7 +231,7 @@ public class DownloadTaskList {
 
         private final boolean osmData;
 
-        public PostDownloadProcessor(boolean osmData) {
+        PostDownloadProcessor(boolean osmData) {
             this.osmData = osmData;
         }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
index 1e50d76..53962b0 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
@@ -46,14 +46,14 @@ import org.openstreetmap.josm.tools.Shortcut;
  */
 public class DeleteAction extends MapMode implements ModifierListener {
     // Cache previous mouse event (needed when only the modifier keys are pressed but the mouse isn't moved)
-    private MouseEvent oldEvent = null;
+    private MouseEvent oldEvent;
 
     /**
      * elements that have been highlighted in the previous iteration. Used
      * to remove the highlight from them again as otherwise the whole data
      * set would have to be checked.
      */
-    private transient WaySegment oldHighlightedWaySegment = null;
+    private transient WaySegment oldHighlightedWaySegment;
 
     private static final HighlightHelper highlightHelper = new HighlightHelper();
     private boolean drawTargetHighlight;
@@ -168,7 +168,7 @@ public class DeleteAction extends MapMode implements ModifierListener {
     /**
      * removes any highlighting that may have been set beforehand.
      */
-    private void removeHighlighting() {
+    private static void removeHighlighting() {
         highlightHelper.clear();
         DataSet ds = getCurrentDataSet();
         if (ds != null) {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
index 75efd1d..4586258 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
@@ -79,7 +79,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
     private final Cursor cursorJoinNode;
     private final Cursor cursorJoinWay;
 
-    private transient Node lastUsedNode = null;
+    private transient Node lastUsedNode;
     private double toleranceMultiplier;
 
     private transient Node mouseOnExistingNode;
@@ -93,7 +93,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
     // repaint if there are changes.
     private transient Set<OsmPrimitive> newHighlights = new HashSet<>();
     private boolean drawHelperLine;
-    private boolean wayIsFinished = false;
+    private boolean wayIsFinished;
     private boolean drawTargetHighlight;
     private Point mousePos;
     private Point oldMousePos;
@@ -154,7 +154,8 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
     }
 
     /**
-     * Checks if a map redraw is required and does so if needed. Also updates the status bar
+     * Checks if a map redraw is required and does so if needed. Also updates the status bar.
+     * @return true if a repaint is needed
      */
     private boolean redrawIfRequired() {
         updateStatusLine();
@@ -235,8 +236,6 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         Main.map.keyDetector.addKeyListener(this);
         Main.map.keyDetector.addModifierListener(this);
         ignoreNextKeyRelease = true;
-        // would like to but haven't got mouse position yet:
-        // computeHelperLine(false, false, false);
     }
 
     private void readPreferences() {
@@ -651,8 +650,6 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
             pruneSuccsAndReverse(is);
             for (int i : is) {
                 segSet.add(Pair.sort(new Pair<>(w.getNode(i), w.getNode(i+1))));
-            }
-            for (int i : is) {
                 wnew.addNode(i + 1, n);
             }
 
@@ -834,7 +831,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         // status bar was filled by snapHelper
     }
 
-    private void showStatusInfo(double angle, double hdg, double distance, boolean activeFlag) {
+    private static void showStatusInfo(double angle, double hdg, double distance, boolean activeFlag) {
         Main.map.statusLine.setAngle(angle);
         Main.map.statusLine.activateAnglePanel(activeFlag);
         Main.map.statusLine.setHeading(hdg);
@@ -1106,7 +1103,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
 
     /**
      * Removes target highlighting from primitives. Issues repaint if required.
-     * Returns true if a repaint has been issued.
+     * @return true if a repaint has been issued.
      */
     private boolean removeHighlighting() {
         newHighlights = new HashSet<>();
@@ -1238,6 +1235,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
      * For this case, this method returns the current way as selection,
      * to work around this issue.
      * Otherwise the normal selection of the current data layer is returned.
+     * @return selected primitives, while draw action is in progress
      */
     public Collection<OsmPrimitive> getInProgressSelection() {
         DataSet ds = getCurrentDataSet();
@@ -1773,7 +1771,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         /**
          * Constructs a new {@code SnapChangeAction}.
          */
-        public SnapChangeAction() {
+        SnapChangeAction() {
             super(tr("Angle snapping"), /* ICON() */ "anglesnap",
                     tr("Switch angle snapping mode while drawing"), null, false);
             putValue("help", ht("/Action/Draw/AngleSnap"));
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
index d61bb61..f983425 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
@@ -68,12 +68,12 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     /**
      * If {@code true}, when extruding create new node(s) even if segments are parallel.
      */
-    private boolean alwaysCreateNodes = false;
+    private boolean alwaysCreateNodes;
     private boolean nodeDragWithoutCtrl;
 
-    private long mouseDownTime = 0;
-    private transient WaySegment selectedSegment = null;
-    private transient Node selectedNode = null;
+    private long mouseDownTime;
+    private transient WaySegment selectedSegment;
+    private transient Node selectedNode;
     private Color mainColor;
     private transient Stroke mainStroke;
 
@@ -157,7 +157,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         public final EastNorth p2;
         public final boolean perpendicular;
 
-        public ReferenceSegment(EastNorth en, EastNorth p1, EastNorth p2, boolean perpendicular) {
+        ReferenceSegment(EastNorth en, EastNorth p1, EastNorth p2, boolean perpendicular) {
             this.en = en;
             this.p1 = p1;
             this.p2 = p2;
@@ -166,7 +166,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
 
         @Override
         public String toString() {
-            return "ReferenceSegment[en=" + en + ", p1=" + p1 + ", p2=" + p2 + ", perp=" + perpendicular + "]";
+            return "ReferenceSegment[en=" + en + ", p1=" + p1 + ", p2=" + p2 + ", perp=" + perpendicular + ']';
         }
     }
 
@@ -179,7 +179,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     /** Dual alignment reference segments */
     private transient ReferenceSegment dualAlignSegment1, dualAlignSegment2;
     /** {@code true}, if new segment was collapsed */
-    private boolean dualAlignSegmentCollapsed = false;
+    private boolean dualAlignSegmentCollapsed;
     // Dual alignment UI stuff
     private final DualAlignChangeAction dualAlignChangeAction;
     private final JCheckBoxMenuItem dualAlignCheckboxMenuItem;
@@ -188,7 +188,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     private boolean ignoreNextKeyRelease;
 
     private class DualAlignChangeAction extends JosmAction {
-        public DualAlignChangeAction() {
+        DualAlignChangeAction() {
             super(tr("Dual alignment"), /* ICON() */ "mapmode/extrude/dualalign",
                     tr("Switch dual alignment mode while extruding"), null, false);
             putValue("help", ht("/Action/Extrude#DualAlign"));
@@ -560,7 +560,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      * Inserts node into nearby segment.
      * @param e current mouse point
      */
-    private void addNewNode(MouseEvent e) {
+    private static void addNewNode(MouseEvent e) {
         // Should maybe do the same as in DrawAction and fetch all nearby segments?
         WaySegment ws = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive.isSelectablePredicate);
         if (ws != null) {
@@ -1107,9 +1107,10 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
     }
 
     /**
-     * Returns true if from1-to1 and from2-to2 vertors directions are opposite
+     * Determines if from1-to1 and from2-to2 vertors directions are opposite
+     * @return true if from1-to1 and from2-to2 vertors directions are opposite
      */
-    private boolean isOppositeDirection(EastNorth from1, EastNorth to1, EastNorth from2, EastNorth to2) {
+    private static boolean isOppositeDirection(EastNorth from1, EastNorth to1, EastNorth from2, EastNorth to2) {
         return (from1.getX()-to1.getX())*(from2.getX()-to2.getX())
               +(from1.getY()-to1.getY())*(from2.getY()-to2.getY()) < 0;
     }
@@ -1178,10 +1179,10 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
             double linelength = Math.abs(widthpoint.getX()) + Math.abs(widthpoint.getY())
                     + Math.abs(heightpoint.getX()) + Math.abs(heightpoint.getY());
 
-            return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * linelength) , start.getY()
+            return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * linelength), start.getY()
                     + (unitvector.getY() * linelength)));
         } catch (NoninvertibleTransformException e) {
-            return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * 10) , start.getY()
+            return new Line2D.Double(start, new Point2D.Double(start.getX() + (unitvector.getX() * 10), start.getY()
                     + (unitvector.getY() * 10)));
         }
     }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
index 72cf5cf..5f52c5b 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
@@ -64,11 +64,11 @@ public class ImproveWayAccuracyAction extends MapMode implements MapViewPaintabl
     private static final long serialVersionUID = 42L;
 
     private transient Way targetWay;
-    private transient Node candidateNode = null;
-    private transient WaySegment candidateSegment = null;
+    private transient Node candidateNode;
+    private transient WaySegment candidateSegment;
 
-    private Point mousePos = null;
-    private boolean dragging = false;
+    private Point mousePos;
+    private boolean dragging;
 
     private final Cursor cursorSelect;
     private final Cursor cursorSelectHover;
@@ -85,7 +85,7 @@ public class ImproveWayAccuracyAction extends MapMode implements MapViewPaintabl
     private transient Stroke deleteNodeStroke;
     private int dotSize;
 
-    private boolean selectionChangedBlocked = false;
+    private boolean selectionChangedBlocked;
 
     protected String oldModeHelpText;
 
@@ -373,7 +373,7 @@ public class ImproveWayAccuracyAction extends MapMode implements MapViewPaintabl
             // Checking if the new coordinate is outside of the world
             if (mv.getLatLon(mousePos.x, mousePos.y).isOutSideWorld()) {
                 JOptionPane.showMessageDialog(Main.parent,
-                        tr("Cannot place a node outside of the world."),
+                        tr("Cannot add a node outside of the world."),
                         tr("Warning"), JOptionPane.WARNING_MESSAGE);
                 return;
             }
@@ -444,9 +444,12 @@ public class ImproveWayAccuracyAction extends MapMode implements MapViewPaintabl
                 List<OsmPrimitive> referrers = candidateNode.getReferrers();
                 List<Way> ways = OsmPrimitive.getFilteredList(referrers, Way.class);
                 if (referrers.size() != 1 || ways.size() != 1) {
-                    JOptionPane.showMessageDialog(Main.parent,
-                            tr("Cannot delete node that is referenced by multiple objects"),
-                            tr("Error"), JOptionPane.ERROR_MESSAGE);
+                    // detach node from way
+                    final Way newWay = new Way(targetWay);
+                    final List<Node> nodes = newWay.getNodes();
+                    nodes.remove(candidateNode);
+                    newWay.setNodes(nodes);
+                    Main.main.undoRedo.add(new ChangeCommand(targetWay, newWay));
                 } else if (candidateNode.isTagged()) {
                     JOptionPane.showMessageDialog(Main.parent,
                             tr("Cannot delete node that has tags"),
diff --git a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
index fb9e7fc..45b635a 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
@@ -20,8 +20,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  * As example scrolling the map is a MapMode, connecting Nodes to new Ways
  * is another.
  *
- * MapModes should register/deregister all necessary listeners on the map's view
- * control.
+ * MapModes should register/deregister all necessary listeners on the map's view control.
  */
 public abstract class MapMode extends JosmAction implements MouseListener, MouseMotionListener {
     protected final Cursor cursor;
@@ -31,6 +30,7 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
 
     /**
      * Constructor for mapmodes without an menu
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
      */
     public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
         super(name, "mapmode/"+iconName, tooltip, shortcut, false);
@@ -40,6 +40,7 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
 
     /**
      * Constructor for mapmodes with an menu (no shortcut will be registered)
+     * @param mapFrame unused but kept for plugin compatibility. Can be {@code null}
      */
     public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
         putValue(NAME, name);
@@ -83,10 +84,15 @@ public abstract class MapMode extends JosmAction implements MouseListener, Mouse
         }
     }
 
-    // By default, all tools will work with all layers. Can be overwritten to require
-    // a special type of layer
+    /**
+     * Determines if layer {@code l} is supported by this map mode.
+     * By default, all tools will work with all layers.
+     * Can be overwritten to require a special type of layer
+     * @param l layer
+     * @return {@code true} if the layer is supported by this map mode
+     */
     public boolean layerIsSupported(Layer l) {
-        return true;
+        return l != null;
     }
 
     protected void updateKeyModifiers(InputEvent e) {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ModifiersSpec.java b/src/org/openstreetmap/josm/actions/mapmode/ModifiersSpec.java
index 3598bc6..a17d784 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ModifiersSpec.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ModifiersSpec.java
@@ -44,12 +44,12 @@ public class ModifiersSpec {
         return match(alt, knownAlt) && match(shift, knownShift) && match(ctrl, knownCtrl);
     }
 
-    private boolean match(final int a, final int knownValue) {
+    private static boolean match(final int a, final int knownValue) {
         assert knownValue == ON | knownValue == OFF;
         return a == knownValue || a == UNKNOWN;
     }
 
-    private boolean match(final int a, final boolean knownValue) {
+    private static boolean match(final int a, final boolean knownValue) {
         return a == (knownValue ? ON : OFF) || a == UNKNOWN;
     }
     // does java have built in 3-state support?
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
index f09880b..65c79af 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.MapViewPaintable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -360,7 +361,7 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
         mv.repaint();
     }
 
-    private void removeWayHighlighting(Collection<Way> ways) {
+    private static void removeWayHighlighting(Collection<Way> ways) {
         if (ways == null)
             return;
         for (Way w : ways) {
@@ -553,13 +554,10 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
             getCurrentDataSet().setSelected(pWays.getWays());
             return true;
         } catch (IllegalArgumentException e) {
-            // TODO: Not ideal feedback. Maybe changing the cursor could be a good mechanism?
-            JOptionPane.showMessageDialog(
-                    Main.parent,
-                    tr("ParallelWayAction\n" +
-                            "The ways selected must form a simple branchless path"),
-                    tr("Make parallel way error"),
-                    JOptionPane.INFORMATION_MESSAGE);
+            new Notification(tr("ParallelWayAction\n" +
+                    "The ways selected must form a simple branchless path"))
+                    .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                    .show();
             // The error dialog prevents us from getting the mouseReleased event
             resetMouseTrackingState();
             pWays = null;
@@ -567,11 +565,11 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
         }
     }
 
-    private String prefKey(String subKey) {
+    private static String prefKey(String subKey) {
         return "edit.make-parallel-way-action." + subKey;
     }
 
-    private String getStringPref(String subKey, String def) {
+    private static String getStringPref(String subKey, String def) {
         return Main.pref.get(prefKey(subKey), def);
     }
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
index 869b043..c96e669 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java
@@ -19,10 +19,10 @@ import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
  */
 public class PlayHeadDragMode extends MapMode {
 
-    private boolean dragging = false;
-    private Point mousePos = null;
-    private Point mouseStart = null;
-    private transient PlayHeadMarker playHeadMarker = null;
+    private boolean dragging;
+    private Point mousePos;
+    private Point mouseStart;
+    private transient PlayHeadMarker playHeadMarker;
 
     /**
      * Constructs a new {@code PlayHeadDragMode}.
diff --git a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
index 8b7b9d2..c20dedb 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
@@ -83,7 +83,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
     }
 
     // contains all possible cases the cursor can be in the SelectAction
-    private static enum SelectActionCursor {
+    private enum SelectActionCursor {
         rect("normal", /* ICON(cursor/modifier/) */ "selection"),
         rect_add("normal", /* ICON(cursor/modifier/) */ "select_add"),
         rect_rm("normal", /* ICON(cursor/modifier/) */ "select_remove"),
@@ -115,18 +115,18 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
         }
     }
 
-    private boolean lassoMode = false;
+    private boolean lassoMode;
     public boolean repeatedKeySwitchLassoOption;
 
     // Cache previous mouse event (needed when only the modifier keys are
     // pressed but the mouse isn't moved)
-    private MouseEvent oldEvent = null;
+    private MouseEvent oldEvent;
 
-    private Mode mode = null;
+    private Mode mode;
     private final transient SelectionManager selectionManager;
-    private boolean cancelDrawMode = false;
+    private boolean cancelDrawMode;
     private boolean drawTargetHighlight;
-    private boolean didMouseDrag = false;
+    private boolean didMouseDrag;
     /**
      * The component this SelectAction is associated with.
      */
@@ -146,15 +146,15 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
     /**
      * The time of the user mouse down event.
      */
-    private long mouseDownTime = 0;
+    private long mouseDownTime;
     /**
      * The pressed button of the user mouse down event.
      */
-    private int mouseDownButton = 0;
+    private int mouseDownButton;
     /**
      * The time of the user mouse down event.
      */
-    private long mouseReleaseTime = 0;
+    private long mouseReleaseTime;
     /**
      * The time which needs to pass between click and release before something
      * counts as a move, in milliseconds
@@ -165,7 +165,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
      * counts as a move, in pixels
      */
     private int initialMoveThreshold;
-    private boolean initialMoveThresholdExceeded = false;
+    private boolean initialMoveThresholdExceeded;
 
     /**
      * elements that have been highlighted in the previous iteration. Used
@@ -685,9 +685,10 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
         }
     }
 
-    /** returns true whenever elements have been grabbed and moved (i.e. the initial
-     * thresholds have been exceeded) and is still in progress (i.e. mouse button
-     * still pressed)
+    /**
+     * Determines whenever elements have been grabbed and moved (i.e. the initial
+     * thresholds have been exceeded) and is still in progress (i.e. mouse button still pressed)
+     * @return true if a drag is in progress
      */
     private boolean dragInProgress() {
         return didMouseDrag && startingDraggingPos != null;
@@ -771,7 +772,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
         return true;
     }
 
-    private boolean doesImpactStatusLine(Collection<Node> affectedNodes, Collection<Way> selectedWays) {
+    private static boolean doesImpactStatusLine(Collection<Node> affectedNodes, Collection<Way> selectedWays) {
         for (Way w : selectedWays) {
             for (Node n : w.getNodes()) {
                 if (affectedNodes.contains(n)) {
@@ -796,8 +797,9 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
 
     /**
      * Obtain command in undoRedo stack to "continue" when dragging
+     * @return last command
      */
-    private Command getLastCommand() {
+    private static Command getLastCommand() {
         Command c = !Main.main.undoRedo.commands.isEmpty()
                 ? Main.main.undoRedo.commands.getLast() : null;
         if (c instanceof SequenceCommand) {
@@ -900,6 +902,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
     /**
      * Tries to find a node to merge to when in move-merge mode for the current mouse
      * position. Either returns the node or null, if no suitable one is nearby.
+     * @return node to merge to, or null
      */
     private Node findNodeToMergeTo(Point p) {
         Collection<Node> target = mv.getNearestNodes(p,
@@ -959,7 +962,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
                 return tr("Release the mouse button to select the objects in the rectangle.");
             else if (mode == Mode.MOVE && (System.currentTimeMillis() - mouseDownTime >= initialMoveDelay)) {
                 final boolean canMerge = getCurrentDataSet() != null && !getCurrentDataSet().getSelectedNodes().isEmpty();
-                final String mergeHelp = canMerge ? " " + tr("Ctrl to merge with nearest node.") : "";
+                final String mergeHelp = canMerge ? ' ' + tr("Ctrl to merge with nearest node.") : "";
                 return tr("Release the mouse button to stop moving.") + mergeHelp;
             } else if (mode == Mode.ROTATE)
                 return tr("Release the mouse button to stop rotating.");
@@ -990,8 +993,8 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
     private class CycleManager {
 
         private Collection<OsmPrimitive> cycleList = Collections.emptyList();
-        private boolean cyclePrims = false;
-        private OsmPrimitive cycleStart = null;
+        private boolean cyclePrims;
+        private OsmPrimitive cycleStart;
         private boolean waitForMouseUpParameter;
         private boolean multipleMatchesParameter;
         /**
@@ -1129,7 +1132,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
 
     private class VirtualManager {
 
-        private Node virtualNode = null;
+        private Node virtualNode;
         private Collection<WaySegment> virtualWays = new LinkedList<>();
         private int nodeVirtualSize;
         private int virtualSnapDistSq2;
diff --git a/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java b/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
index c89955c..2bcf900 100644
--- a/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
+++ b/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
@@ -33,7 +33,7 @@ public class PushbackTokenizer {
 
         @Override
         public String toString() {
-            return "Range [start=" + start + ", end=" + end + "]";
+            return "Range [start=" + start + ", end=" + end + ']';
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/search/SearchAction.java b/src/org/openstreetmap/josm/actions/search/SearchAction.java
index 56b0a24..3b9a269 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchAction.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchAction.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.actions.search;
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Cursor;
 import java.awt.Dimension;
@@ -43,12 +44,13 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Filter;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionParser;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Property;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -61,7 +63,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
 
     private static final String SEARCH_EXPRESSION = "searchExpression";
 
-    public static enum SearchMode {
+    public enum SearchMode {
         replace('R'), add('A'), remove('D'), in_selection('S');
 
         private final char code;
@@ -124,7 +126,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         return ret;
     }
 
-    private static volatile SearchSetting lastSearch = null;
+    private static volatile SearchSetting lastSearch;
 
     /**
      * Constructs a new {@code SearchAction}.
@@ -177,7 +179,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
 
         private final HistoryComboBox hcb;
 
-        public SearchKeywordRow(HistoryComboBox hcb) {
+        SearchKeywordRow(HistoryComboBox hcb) {
             super(new FlowLayout(FlowLayout.LEFT));
             this.hcb = hcb;
         }
@@ -206,7 +208,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                     public void mouseClicked(MouseEvent e) {
                         try {
                             JTextComponent tf = (JTextComponent) hcb.getEditor().getEditorComponent();
-                            tf.getDocument().insertString(tf.getCaretPosition(), " " + insertText, null);
+                            tf.getDocument().insertString(tf.getCaretPosition(), ' ' + insertText, null);
                         } catch (BadLocationException ex) {
                             throw new RuntimeException(ex.getMessage(), ex);
                         }
@@ -248,8 +250,14 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         final JCheckBox caseSensitive = new JCheckBox(tr("case sensitive"), initialValues.caseSensitive);
         JCheckBox allElements = new JCheckBox(tr("all objects"), initialValues.allElements);
         allElements.setToolTipText(tr("Also include incomplete and deleted objects in search."));
-        final JCheckBox regexSearch   = new JCheckBox(tr("regular expression"), initialValues.regexSearch);
-        final JCheckBox addOnToolbar  = new JCheckBox(tr("add toolbar button"), false);
+        final JRadioButton standardSearch = new JRadioButton(tr("standard"), !initialValues.regexSearch && !initialValues.mapCSSSearch);
+        final JRadioButton regexSearch = new JRadioButton(tr("regular expression"), initialValues.regexSearch);
+        final JRadioButton mapCSSSearch = new JRadioButton(tr("MapCSS selector"), initialValues.mapCSSSearch);
+        final JCheckBox addOnToolbar = new JCheckBox(tr("add toolbar button"), false);
+        final ButtonGroup bg2 = new ButtonGroup();
+        bg2.add(standardSearch);
+        bg2.add(regexSearch);
+        bg2.add(mapCSSSearch);
 
         JPanel top = new JPanel(new GridBagLayout());
         top.add(label, GBC.std().insets(0, 0, 5, 0));
@@ -262,8 +270,10 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         left.add(caseSensitive, GBC.eol());
         if (Main.pref.getBoolean("expert", false)) {
             left.add(allElements, GBC.eol());
+            left.add(addOnToolbar, GBC.eop());
+            left.add(standardSearch, GBC.eol());
             left.add(regexSearch, GBC.eol());
-            left.add(addOnToolbar, GBC.eol());
+            left.add(mapCSSSearch, GBC.eol());
         }
 
         final JPanel right;
@@ -285,7 +295,12 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
             protected void buttonAction(int buttonIndex, ActionEvent evt) {
                 if (buttonIndex == 0) {
                     try {
-                        SearchCompiler.compile(hcbSearchString.getText(), caseSensitive.isSelected(), regexSearch.isSelected());
+                        SearchSetting ss = new SearchSetting();
+                        ss.text = hcbSearchString.getText();
+                        ss.caseSensitive = caseSensitive.isSelected();
+                        ss.regexSearch = regexSearch.isSelected();
+                        ss.mapCSSSearch = mapCSSSearch.isSelected();
+                        SearchCompiler.compile(ss);
                         super.buttonAction(buttonIndex, evt);
                     } catch (ParseError e) {
                         JOptionPane.showMessageDialog(
@@ -316,6 +331,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         initialValues.caseSensitive = caseSensitive.isSelected();
         initialValues.allElements = allElements.isSelected();
         initialValues.regexSearch = regexSearch.isSelected();
+        initialValues.mapCSSSearch = mapCSSSearch.isSelected();
 
         if (addOnToolbar.isSelected()) {
             ToolbarPreferences.ActionDefinition aDef =
@@ -337,8 +353,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("basic examples"))
                 .addKeyword(tr("Baker Street"), null, tr("''Baker'' and ''Street'' in any key"))
-                .addKeyword(tr("\"Baker Street\""), "\"\"", tr("''Baker Street'' in any key"))
-                , GBC.eol());
+                .addKeyword(tr("\"Baker Street\""), "\"\"", tr("''Baker Street'' in any key")),
+                GBC.eol());
         right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("basics"))
                 .addKeyword("<i>key</i>:<i>valuefragment</i>", null,
@@ -352,16 +368,16 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                 .addKeyword("\"key\"=\"value\"", "\"\"=\"\"",
                         tr("to quote operators.<br>Within quoted strings the <b>\"</b> and <b>\\</b> characters need to be escaped " +
                            "by a preceding <b>\\</b> (e.g. <b>\\\"</b> and <b>\\\\</b>)."),
-                        "\"addr:street\"")
-                , GBC.eol());
+                        "\"addr:street\""),
+                GBC.eol());
         right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("combinators"))
                 .addKeyword("<i>expr</i> <i>expr</i>", null, tr("logical and (both expressions have to be satisfied)"))
                 .addKeyword("<i>expr</i> | <i>expr</i>", "| ", tr("logical or (at least one expression has to be satisfied)"))
                 .addKeyword("<i>expr</i> OR <i>expr</i>", "OR ", tr("logical or (at least one expression has to be satisfied)"))
                 .addKeyword("-<i>expr</i>", null, tr("logical not"))
-                .addKeyword("(<i>expr</i>)", "()", tr("use parenthesis to group expressions"))
-                , GBC.eol());
+                .addKeyword("(<i>expr</i>)", "()", tr("use parenthesis to group expressions")),
+                GBC.eol());
 
         if (Main.pref.getBoolean("expert", false)) {
             right.add(new SearchKeywordRow(hcbSearchString)
@@ -370,8 +386,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                 .addKeyword("type:way", "type:way ", tr("all ways"))
                 .addKeyword("type:relation", "type:relation ", tr("all relations"))
                 .addKeyword("closed", "closed ", tr("all closed ways"))
-                .addKeyword("untagged", "untagged ", tr("object without useful tags"))
-                , GBC.eol());
+                .addKeyword("untagged", "untagged ", tr("object without useful tags")),
+                GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("metadata"))
                 .addKeyword("user:", "user:", tr("objects changed by user", "user:anonymous"))
@@ -380,8 +396,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                 .addKeyword("changeset:", "changeset:", tr("objects with given changeset ID"),
                         "changeset:0 (objects without an assigned changeset)")
                 .addKeyword("timestamp:", "timestamp:", tr("objects with last modification timestamp within range"), "timestamp:2012/",
-                        "timestamp:2008/2011-02-04T12")
-                , GBC.eol());
+                        "timestamp:2008/2011-02-04T12"),
+                GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("properties"))
                 .addKeyword("nodes:<i>20-</i>", "nodes:", tr("ways with at least 20 nodes, or relations containing at least 20 nodes"))
@@ -389,32 +405,34 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                 .addKeyword("tags:<i>5-10</i>", "tags:", tr("objects having 5 to 10 tags"))
                 .addKeyword("role:", "role:", tr("objects with given role in a relation"))
                 .addKeyword("areasize:<i>-100</i>", "areasize:", tr("closed ways with an area of 100 m\u00b2"))
-                .addKeyword("waylength:<i>200-</i>", "waylength:", tr("ways with a length of 200 m or more"))
-                , GBC.eol());
+                .addKeyword("waylength:<i>200-</i>", "waylength:", tr("ways with a length of 200 m or more")),
+                GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("state"))
                 .addKeyword("modified", "modified ", tr("all modified objects"))
                 .addKeyword("new", "new ", tr("all new objects"))
                 .addKeyword("selected", "selected ", tr("all selected objects"))
-                .addKeyword("incomplete", "incomplete ", tr("all incomplete objects"))
-                , GBC.eol());
+                .addKeyword("incomplete", "incomplete ", tr("all incomplete objects")),
+                GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("related objects"))
                 .addKeyword("child <i>expr</i>", "child ", tr("all children of objects matching the expression"), "child building")
                 .addKeyword("parent <i>expr</i>", "parent ", tr("all parents of objects matching the expression"), "parent bus_stop")
-                .addKeyword("nth:<i>7</i>", "nth: ",
+                .addKeyword("hasRole:<i>stop</i>", "hasRole:", tr("relation containing a member of role <i>stop</i>"))
+                .addKeyword("role:<i>stop</i>", "role:", tr("objects being part of a relation as role <i>stop</i>"))
+                .addKeyword("nth:<i>7</i>", "nth:",
                         tr("n-th member of relation and/or n-th node of way"), "nth:5 (child type:relation)", "nth:-1")
-                .addKeyword("nth%:<i>7</i>", "nth%: ",
-                        tr("every n-th member of relation and/or every n-th node of way"), "nth%:100 (child waterway)")
-                , GBC.eol());
+                .addKeyword("nth%:<i>7</i>", "nth%:",
+                        tr("every n-th member of relation and/or every n-th node of way"), "nth%:100 (child waterway)"),
+                GBC.eol());
             right.add(new SearchKeywordRow(hcbSearchString)
                 .addTitle(tr("view"))
                 .addKeyword("inview", "inview ", tr("objects in current view"))
                 .addKeyword("allinview", "allinview ", tr("objects (and all its way nodes / relation members) in current view"))
                 .addKeyword("indownloadedarea", "indownloadedarea ", tr("objects in downloaded area"))
                 .addKeyword("allindownloadedarea", "allindownloadedarea ",
-                        tr("objects (and all its way nodes / relation members) in downloaded area"))
-                , GBC.eol());
+                        tr("objects (and all its way nodes / relation members) in downloaded area")),
+                GBC.eol());
         }
     }
 
@@ -450,160 +468,163 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         search(s);
     }
 
-    public static int getSelection(SearchSetting s, Collection<OsmPrimitive> sel, Predicate<OsmPrimitive> p) {
-        int foundMatches = 0;
-        try {
-            String searchText = s.text;
-            SearchCompiler.Match matcher = SearchCompiler.compile(searchText, s.caseSensitive, s.regexSearch);
-
-            if (s.mode == SearchMode.replace) {
-                sel.clear();
-            } else if (s.mode == SearchMode.in_selection) {
-                foundMatches = sel.size();
-            }
+    /**
+     * Performs the search specified by the search string {@code search} and the search mode {@code mode}.
+     *
+     * @param search the search string to use
+     * @param mode the search mode to use
+     */
+    public static void search(String search, SearchMode mode) {
+        final SearchSetting searchSetting = new SearchSetting();
+        searchSetting.text = search;
+        searchSetting.mode = mode;
+        search(searchSetting);
+    }
 
-            Collection<OsmPrimitive> all;
-            if (s.allElements) {
-                all = Main.main.getCurrentDataSet().allPrimitives();
-            } else {
-                all = Main.main.getCurrentDataSet().allNonDeletedCompletePrimitives();
-            }
+    static void search(SearchSetting s) {
+        SearchTask.newSearchTask(s).run();
+    }
 
-            for (OsmPrimitive osm : all) {
-                if (s.mode == SearchMode.replace) {
-                    if (matcher.match(osm)) {
-                        sel.add(osm);
-                        ++foundMatches;
-                    }
-                } else if (s.mode == SearchMode.add && !p.evaluate(osm) && matcher.match(osm)) {
-                    sel.add(osm);
-                    ++foundMatches;
-                } else if (s.mode == SearchMode.remove && p.evaluate(osm) && matcher.match(osm)) {
-                    sel.remove(osm);
-                    ++foundMatches;
-                } else if (s.mode == SearchMode.in_selection && p.evaluate(osm) && !matcher.match(osm)) {
-                    sel.remove(osm);
-                    --foundMatches;
+    static final class SearchTask extends PleaseWaitRunnable {
+        private final DataSet ds;
+        private final SearchSetting setting;
+        private final Collection<OsmPrimitive> selection;
+        private final Predicate<OsmPrimitive> predicate;
+        private boolean canceled;
+        private int foundMatches;
+
+        private SearchTask(DataSet ds, SearchSetting setting, Collection<OsmPrimitive> selection, Predicate<OsmPrimitive> predicate) {
+            super(tr("Searching"));
+            this.ds = ds;
+            this.setting = setting;
+            this.selection = selection;
+            this.predicate = predicate;
+        }
+
+        static SearchTask newSearchTask(SearchSetting setting) {
+            final DataSet ds = Main.main.getCurrentDataSet();
+            final Collection<OsmPrimitive> selection = new HashSet<>(ds.getAllSelected());
+            return new SearchTask(ds, setting, selection, new Predicate<OsmPrimitive>() {
+                @Override
+                public boolean evaluate(OsmPrimitive o) {
+                    return ds.isSelected(o);
                 }
-            }
-        } catch (SearchCompiler.ParseError e) {
-            JOptionPane.showMessageDialog(
-                    Main.parent,
-                    e.getMessage(),
-                    tr("Error"),
-                    JOptionPane.ERROR_MESSAGE
+            });
+        }
 
-            );
+        @Override
+        protected void cancel() {
+            this.canceled = true;
         }
-        return foundMatches;
-    }
 
-    /**
-     * Version of getSelection that is customized for filter, but should also work in other context.
-     *
-     * @param s the search settings
-     * @param all the collection of all the primitives that should be considered
-     * @param p the property that should be set/unset if something is found
-     */
-    public static void getSelection(SearchSetting s, Collection<OsmPrimitive> all, Property<OsmPrimitive, Boolean> p) {
-        try {
-            String searchText = s.text;
-            if (s instanceof Filter && ((Filter) s).inverted) {
-                searchText = String.format("-(%s)", searchText);
-            }
-            SearchCompiler.Match matcher = SearchCompiler.compile(searchText, s.caseSensitive, s.regexSearch);
-
-            for (OsmPrimitive osm : all) {
-                if (s.mode == SearchMode.replace) {
-                    if (matcher.match(osm)) {
-                        p.set(osm, Boolean.TRUE);
-                    } else {
-                        p.set(osm, Boolean.FALSE);
+        @Override
+        protected void realRun() {
+            try {
+                foundMatches = 0;
+                SearchCompiler.Match matcher = SearchCompiler.compile(setting);
+
+                if (setting.mode == SearchMode.replace) {
+                    selection.clear();
+                } else if (setting.mode == SearchMode.in_selection) {
+                    foundMatches = selection.size();
+                }
+
+                Collection<OsmPrimitive> all;
+                if (setting.allElements) {
+                    all = Main.main.getCurrentDataSet().allPrimitives();
+                } else {
+                    all = Main.main.getCurrentDataSet().allNonDeletedCompletePrimitives();
+                }
+                final ProgressMonitor subMonitor = getProgressMonitor().createSubTaskMonitor(all.size(), false);
+                subMonitor.beginTask(trn("Searching in {0} object", "Searching in {0} objects", all.size(), all.size()));
+
+                for (OsmPrimitive osm : all) {
+                    if (canceled) {
+                        return;
                     }
-                } else if (s.mode == SearchMode.add && !p.get(osm) && matcher.match(osm)) {
-                    p.set(osm, Boolean.TRUE);
-                } else if (s.mode == SearchMode.remove && p.get(osm) && matcher.match(osm)) {
-                    p.set(osm, Boolean.FALSE);
-                } else if (s.mode == SearchMode.in_selection && p.get(osm) && !matcher.match(osm)) {
-                    p.set(osm, Boolean.FALSE);
+                    if (setting.mode == SearchMode.replace) {
+                        if (matcher.match(osm)) {
+                            selection.add(osm);
+                            ++foundMatches;
+                        }
+                    } else if (setting.mode == SearchMode.add && !predicate.evaluate(osm) && matcher.match(osm)) {
+                        selection.add(osm);
+                        ++foundMatches;
+                    } else if (setting.mode == SearchMode.remove && predicate.evaluate(osm) && matcher.match(osm)) {
+                        selection.remove(osm);
+                        ++foundMatches;
+                    } else if (setting.mode == SearchMode.in_selection && predicate.evaluate(osm) && !matcher.match(osm)) {
+                        selection.remove(osm);
+                        --foundMatches;
+                    }
+                    subMonitor.worked(1);
                 }
+                subMonitor.finishTask();
+            } catch (SearchCompiler.ParseError e) {
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        e.getMessage(),
+                        tr("Error"),
+                        JOptionPane.ERROR_MESSAGE
+
+                );
             }
-        } catch (SearchCompiler.ParseError e) {
-            JOptionPane.showMessageDialog(
-                    Main.parent,
-                    e.getMessage(),
-                    tr("Error"),
-                    JOptionPane.ERROR_MESSAGE
-            );
         }
-    }
-
-    public static void search(String search, SearchMode mode) {
-        search(new SearchSetting(search, mode, false, false, false));
-    }
-
-    public static void search(SearchSetting s) {
 
-        final DataSet ds = Main.main.getCurrentDataSet();
-        Collection<OsmPrimitive> sel = new HashSet<>(ds.getAllSelected());
-        int foundMatches = getSelection(s, sel, new Predicate<OsmPrimitive>() {
-            @Override
-            public boolean evaluate(OsmPrimitive o) {
-                return ds.isSelected(o);
+        @Override
+        protected void finish() {
+            if (canceled) {
+                return;
             }
-        });
-        ds.setSelected(sel);
-        if (foundMatches == 0) {
-            String msg = null;
-            final String text = Utils.shortenString(s.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY);
-            if (s.mode == SearchMode.replace) {
-                msg = tr("No match found for ''{0}''", text);
-            } else if (s.mode == SearchMode.add) {
-                msg = tr("Nothing added to selection by searching for ''{0}''", text);
-            } else if (s.mode == SearchMode.remove) {
-                msg = tr("Nothing removed from selection by searching for ''{0}''", text);
-            } else if (s.mode == SearchMode.in_selection) {
-                msg = tr("Nothing found in selection by searching for ''{0}''", text);
+            ds.setSelected(selection);
+            if (foundMatches == 0) {
+                final String msg;
+                final String text = Utils.shortenString(setting.text, MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY);
+                if (setting.mode == SearchMode.replace) {
+                    msg = tr("No match found for ''{0}''", text);
+                } else if (setting.mode == SearchMode.add) {
+                    msg = tr("Nothing added to selection by searching for ''{0}''", text);
+                } else if (setting.mode == SearchMode.remove) {
+                    msg = tr("Nothing removed from selection by searching for ''{0}''", text);
+                } else if (setting.mode == SearchMode.in_selection) {
+                    msg = tr("Nothing found in selection by searching for ''{0}''", text);
+                } else {
+                    msg = null;
+                }
+                Main.map.statusLine.setHelpText(msg);
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        msg,
+                        tr("Warning"),
+                        JOptionPane.WARNING_MESSAGE
+                );
+            } else {
+                Main.map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
             }
-            Main.map.statusLine.setHelpText(msg);
-            JOptionPane.showMessageDialog(
-                    Main.parent,
-                    msg,
-                    tr("Warning"),
-                    JOptionPane.WARNING_MESSAGE
-            );
-        } else {
-            Main.map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
         }
     }
 
     public static class SearchSetting {
-        public String text;
-        public SearchMode mode;
+        public String text = "";
+        public SearchMode mode = SearchMode.replace;
         public boolean caseSensitive;
         public boolean regexSearch;
+        public boolean mapCSSSearch;
         public boolean allElements;
 
         /**
          * Constructs a new {@code SearchSetting}.
          */
         public SearchSetting() {
-            this("", SearchMode.replace, false /* case insensitive */,
-                    false /* no regexp */, false /* only useful primitives */);
-        }
-
-        public SearchSetting(String text, SearchMode mode, boolean caseSensitive,
-                boolean regexSearch, boolean allElements) {
-            this.caseSensitive = caseSensitive;
-            this.regexSearch = regexSearch;
-            this.allElements = allElements;
-            this.mode = mode;
-            this.text = text;
         }
 
         public SearchSetting(SearchSetting original) {
-            this(original.text, original.mode, original.caseSensitive,
-                    original.regexSearch, original.allElements);
+            text = original.text;
+            mode = original.mode;
+            caseSensitive = original.caseSensitive;
+            regexSearch = original.regexSearch;
+            mapCSSSearch = original.mapCSSSearch;
+            allElements = original.allElements;
         }
 
         @Override
@@ -611,11 +632,13 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
             String cs = caseSensitive ?
                     /*case sensitive*/  trc("search", "CS") :
                         /*case insensitive*/  trc("search", "CI");
-                    String rx = regexSearch ? ", " +
+            String rx = regexSearch ? ", " +
                             /*regex search*/ trc("search", "RX") : "";
-                    String all = allElements ? ", " +
+            String css = mapCSSSearch ? ", " +
+                            /*MapCSS search*/ trc("search", "CSS") : "";
+            String all = allElements ? ", " +
                             /*all elements*/ trc("search", "A") : "";
-                    return "\"" + text + "\" (" + cs + rx + all + ", " + mode + ")";
+            return '"' + text + "\" (" + cs + rx + css + all + ", " + mode + ')';
         }
 
         @Override
@@ -625,6 +648,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
             SearchSetting o = (SearchSetting) other;
             return o.caseSensitive == this.caseSensitive
                     && o.regexSearch == this.regexSearch
+                    && o.mapCSSSearch == this.mapCSSSearch
                     && o.allElements == this.allElements
                     && o.mode.equals(this.mode)
                     && o.text.equals(this.text);
@@ -656,6 +680,8 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                     result.regexSearch = true;
                 } else if (s.charAt(index) == 'A') {
                     result.allElements = true;
+                } else if (s.charAt(index) == 'M') {
+                    result.mapCSSSearch = true;
                 } else if (s.charAt(index) == ' ') {
                     break;
                 } else {
@@ -686,6 +712,9 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
             if (regexSearch) {
                 result.append('R');
             }
+            if (mapCSSSearch) {
+                result.append('M');
+            }
             if (allElements) {
                 result.append('A');
             }
diff --git a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
index d143cd0..af235a0 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
@@ -10,6 +10,7 @@ import java.text.Normalizer;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -27,6 +28,11 @@ import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.mappaint.Environment;
+import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
+import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
+import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
+import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
@@ -55,8 +61,8 @@ fact =
  */
 public class SearchCompiler {
 
-    private boolean caseSensitive = false;
-    private boolean regexSearch = false;
+    private boolean caseSensitive;
+    private boolean regexSearch;
     private static String  rxErrorMsg = marktr("The regex \"{0}\" had a parse error at offset {1}, full error:\n\n{2}");
     private static String  rxErrorMsgNoPos = marktr("The regex \"{0}\" had a parse error, full error:\n\n{1}");
     private PushbackTokenizer tokenizer;
@@ -99,10 +105,10 @@ public class SearchCompiler {
     }
 
     public class CoreSimpleMatchFactory implements SimpleMatchFactory {
-        private Collection<String> keywords = Arrays.asList("id", "version",
+        private Collection<String> keywords = Arrays.asList("id", "version", "type", "user", "role",
                 "changeset", "nodes", "ways", "tags", "areasize", "waylength", "modified", "selected",
                 "incomplete", "untagged", "closed", "new", "indownloadedarea",
-                "allindownloadedarea", "inview", "allinview", "timestamp", "nth", "nth%");
+                "allindownloadedarea", "inview", "allinview", "timestamp", "nth", "nth%", "hasRole");
 
         @Override
         public Match get(String keyword, PushbackTokenizer tokenizer) throws ParseError {
@@ -134,6 +140,12 @@ public class SearchCompiler {
                         return new Id(tokenizer);
                     case "version":
                         return new Version(tokenizer);
+                    case "type":
+                        return new ExactType(tokenizer.readTextOrNumber());
+                    case "user":
+                        return new UserMatch(tokenizer.readTextOrNumber());
+                    case "role":
+                        return new RoleMatch(tokenizer.readTextOrNumber());
                     case "changeset":
                         return new ChangesetId(tokenizer);
                     case "nodes":
@@ -150,9 +162,11 @@ public class SearchCompiler {
                         return new Nth(tokenizer, false);
                     case "nth%":
                         return new Nth(tokenizer, true);
+                    case "hasRole":
+                        return new HasRole(tokenizer);
                     case "timestamp":
                         // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
-                        String rangeS = " " + tokenizer.readTextOrNumber() + " ";
+                        String rangeS = ' ' + tokenizer.readTextOrNumber() + ' ';
                         String[] rangeA = rangeS.split("/");
                         if (rangeA.length == 1) {
                             return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
@@ -226,6 +240,8 @@ public class SearchCompiler {
 
         /**
          * Tests whether one of the primitives matches.
+         * @param primitives primitives
+         * @return {@code true} if one of the primitives matches, {@code false} otherwise
          */
         protected boolean existsMatch(Collection<? extends OsmPrimitive> primitives) {
             for (OsmPrimitive p : primitives) {
@@ -237,6 +253,8 @@ public class SearchCompiler {
 
         /**
          * Tests whether all primitives match.
+         * @param primitives primitives
+         * @return {@code true} if all primitives match, {@code false} otherwise
          */
         protected boolean forallMatch(Collection<? extends OsmPrimitive> primitives) {
             for (OsmPrimitive p : primitives) {
@@ -348,7 +366,7 @@ public class SearchCompiler {
         private final String key;
         private final boolean defaultValue;
 
-        public BooleanMatch(String key, boolean defaultValue) {
+        BooleanMatch(String key, boolean defaultValue) {
             this.key = key;
             this.defaultValue = defaultValue;
         }
@@ -364,7 +382,7 @@ public class SearchCompiler {
 
         @Override
         public String toString() {
-            return key + "?";
+            return key + '?';
         }
     }
 
@@ -429,11 +447,11 @@ public class SearchCompiler {
      * Matches objects with ID in the given range.
      */
     private static class Id extends RangeMatch {
-        public Id(Range range) {
+        Id(Range range) {
             super(range);
         }
 
-        public Id(PushbackTokenizer tokenizer) throws ParseError {
+        Id(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of primitive ids expected")));
         }
 
@@ -452,11 +470,11 @@ public class SearchCompiler {
      * Matches objects with a changeset ID in the given range.
      */
     private static class ChangesetId extends RangeMatch {
-        public ChangesetId(Range range) {
+        ChangesetId(Range range) {
             super(range);
         }
 
-        public ChangesetId(PushbackTokenizer tokenizer) throws ParseError {
+        ChangesetId(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of changeset ids expected")));
         }
 
@@ -475,11 +493,11 @@ public class SearchCompiler {
      * Matches objects with a version number in the given range.
      */
     private static class Version extends RangeMatch {
-        public Version(Range range) {
+        Version(Range range) {
             super(range);
         }
 
-        public Version(PushbackTokenizer tokenizer) throws ParseError {
+        Version(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of versions expected")));
         }
 
@@ -504,8 +522,8 @@ public class SearchCompiler {
         private final Pattern valuePattern;
         private final boolean caseSensitive;
 
-        public KeyValue(String key, String value, boolean regexSearch, boolean caseSensitive) throws ParseError {
-        this.caseSensitive = caseSensitive;
+        KeyValue(String key, String value, boolean regexSearch, boolean caseSensitive) throws ParseError {
+            this.caseSensitive = caseSensitive;
             if (regexSearch) {
                 int searchFlags = regexFlags(caseSensitive);
 
@@ -600,33 +618,48 @@ public class SearchCompiler {
 
         @Override
         public String toString() {
-            return key + "=" + value;
+            return key + '=' + value;
         }
     }
 
     public static class ValueComparison extends Match {
         private final String key;
         private final String referenceValue;
+        private final Double referenceNumber;
         private final int compareMode;
+        private static final Pattern ISO8601 = Pattern.compile("\\d+-\\d+-\\d+");
 
         public ValueComparison(String key, String referenceValue, int compareMode) {
             this.key = key;
             this.referenceValue = referenceValue;
+            Double v = null;
+            try {
+                v = Double.valueOf(referenceValue);
+            } catch (NumberFormatException ignore) {
+                if (Main.isTraceEnabled()) {
+                    Main.trace(ignore.getMessage());
+                }
+            }
+            this.referenceNumber = v;
             this.compareMode = compareMode;
         }
 
         @Override
         public boolean match(OsmPrimitive osm) {
-            int compareResult;
-            String currentValue = osm.get(key);
-            if (currentValue == null) return false;
-            try {
-                compareResult = Double.compare(
-                        Double.parseDouble(currentValue),
-                        Double.parseDouble(referenceValue)
-                );
-            } catch (NumberFormatException ignore) {
-                compareResult = osm.get(key).compareTo(referenceValue);
+            final String currentValue = osm.get(key);
+            final int compareResult;
+            if (currentValue == null) {
+                return false;
+            } else if (ISO8601.matcher(currentValue).matches() || ISO8601.matcher(referenceValue).matches()) {
+                compareResult = currentValue.compareTo(referenceValue);
+            } else if (referenceNumber != null) {
+                try {
+                    compareResult = Double.compare(Double.parseDouble(currentValue), referenceNumber);
+                } catch (NumberFormatException ignore) {
+                    return false;
+                }
+            } else {
+                compareResult = AlphanumComparator.getInstance().compare(currentValue, referenceValue);
             }
             return compareMode < 0 ? compareResult < 0 : compareMode > 0 ? compareResult > 0 : compareResult == 0;
         }
@@ -775,7 +808,7 @@ public class SearchCompiler {
         private final Pattern searchRegex;
         private final boolean caseSensitive;
 
-        public Any(String s, boolean regexSearch, boolean caseSensitive) throws ParseError {
+        Any(String s, boolean regexSearch, boolean caseSensitive) throws ParseError {
             s = Normalizer.normalize(s, Normalizer.Form.NFC);
             this.caseSensitive = caseSensitive;
             if (regexSearch) {
@@ -839,7 +872,7 @@ public class SearchCompiler {
     private static class ExactType extends Match {
         private final OsmPrimitiveType type;
 
-        public ExactType(String type) throws ParseError {
+        ExactType(String type) throws ParseError {
             this.type = OsmPrimitiveType.from(type);
             if (this.type == null)
                 throw new ParseError(tr("Unknown primitive type: {0}. Allowed values are node, way or relation",
@@ -863,7 +896,7 @@ public class SearchCompiler {
     private static class UserMatch extends Match {
         private String user;
 
-        public UserMatch(String user) {
+        UserMatch(String user) {
             if ("anonymous".equals(user)) {
                 this.user = null;
             } else {
@@ -891,7 +924,7 @@ public class SearchCompiler {
     private static class RoleMatch extends Match {
         private String role;
 
-        public RoleMatch(String role) {
+        RoleMatch(String role) {
             if (role == null) {
                 this.role = "";
             } else {
@@ -929,7 +962,7 @@ public class SearchCompiler {
         private final int nth;
         private final boolean modulo;
 
-        public Nth(PushbackTokenizer tokenizer, boolean modulo) throws ParseError {
+        Nth(PushbackTokenizer tokenizer, boolean modulo) throws ParseError {
             this((int) tokenizer.readNumber(tr("Positive integer expected")), modulo);
         }
 
@@ -976,12 +1009,12 @@ public class SearchCompiler {
         private final long min;
         private final long max;
 
-        public RangeMatch(long min, long max) {
+        RangeMatch(long min, long max) {
             this.min = Math.min(min, max);
             this.max = Math.max(min, max);
         }
 
-        public RangeMatch(Range range) {
+        RangeMatch(Range range) {
             this(range.getStart(), range.getEnd());
         }
 
@@ -1000,7 +1033,7 @@ public class SearchCompiler {
 
         @Override
         public String toString() {
-            return getString() + "=" + min + "-" + max;
+            return getString() + '=' + min + '-' + max;
         }
     }
 
@@ -1008,11 +1041,11 @@ public class SearchCompiler {
      * Matches ways with a number of nodes in given range
      */
     private static class NodeCountRange extends RangeMatch {
-        public NodeCountRange(Range range) {
+        NodeCountRange(Range range) {
             super(range);
         }
 
-        public NodeCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        NodeCountRange(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1037,11 +1070,11 @@ public class SearchCompiler {
      * Matches objects with the number of referring/contained ways in the given range
      */
     private static class WayCountRange extends RangeMatch {
-        public WayCountRange(Range range) {
+        WayCountRange(Range range) {
             super(range);
         }
 
-        public WayCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        WayCountRange(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1066,11 +1099,11 @@ public class SearchCompiler {
      * Matches objects with a number of tags in given range
      */
     private static class TagCountRange extends RangeMatch {
-        public TagCountRange(Range range) {
+        TagCountRange(Range range) {
             super(range);
         }
 
-        public TagCountRange(PushbackTokenizer tokenizer) throws ParseError {
+        TagCountRange(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1090,7 +1123,7 @@ public class SearchCompiler {
      */
     private static class TimestampRange extends RangeMatch {
 
-        public TimestampRange(long minCount, long maxCount) {
+        TimestampRange(long minCount, long maxCount) {
             super(minCount, maxCount);
         }
 
@@ -1106,6 +1139,22 @@ public class SearchCompiler {
     }
 
     /**
+     * Matches relations with a member of the given role
+     */
+    private static class HasRole extends Match {
+        private final String role;
+
+        HasRole(PushbackTokenizer tokenizer) {
+            role = tokenizer.readTextOrNumber();
+        }
+
+        @Override
+        public boolean match(OsmPrimitive osm) {
+            return osm instanceof Relation && ((Relation) osm).getMemberRoles().contains(role);
+        }
+    }
+
+    /**
      * Matches objects that are new (i.e. have not been uploaded to the server)
      */
     private static class New extends Match {
@@ -1141,7 +1190,7 @@ public class SearchCompiler {
     private static class Selected extends Match {
         @Override
         public boolean match(OsmPrimitive osm) {
-            return Main.main.getCurrentDataSet().isSelected(osm);
+            return osm.getDataSet().isSelected(osm);
         }
 
         @Override
@@ -1225,7 +1274,7 @@ public class SearchCompiler {
 
         @Override
         public String toString() {
-            return "parent(" + match + ")";
+            return "parent(" + match + ')';
         }
     }
 
@@ -1249,7 +1298,7 @@ public class SearchCompiler {
 
         @Override
         public String toString() {
-            return "child(" + match + ")";
+            return "child(" + match + ')';
         }
     }
 
@@ -1260,11 +1309,11 @@ public class SearchCompiler {
      */
     private static class AreaSize extends RangeMatch {
 
-        public AreaSize(Range range) {
+        AreaSize(Range range) {
             super(range);
         }
 
-        public AreaSize(PushbackTokenizer tokenizer) throws ParseError {
+        AreaSize(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1287,11 +1336,11 @@ public class SearchCompiler {
      */
     private static class WayLength extends RangeMatch {
 
-        public WayLength(Range range) {
+        WayLength(Range range) {
             super(range);
         }
 
-        public WayLength(PushbackTokenizer tokenizer) throws ParseError {
+        WayLength(PushbackTokenizer tokenizer) throws ParseError {
             this(tokenizer.readRange(tr("Range of numbers expected")));
         }
 
@@ -1319,7 +1368,7 @@ public class SearchCompiler {
         /**
          * @param all if true, all way nodes or relation members have to be within source area;if false, one suffices.
          */
-        public InArea(boolean all) {
+        InArea(boolean all) {
             this.all = all;
         }
 
@@ -1369,7 +1418,7 @@ public class SearchCompiler {
      */
     private static class InView extends InArea {
 
-        public InView(boolean all) {
+        InView(boolean all) {
             super(all);
         }
 
@@ -1401,11 +1450,54 @@ public class SearchCompiler {
         }
     }
 
-    public static Match compile(String searchStr, boolean caseSensitive, boolean regexSearch) throws ParseError {
-        return new SearchCompiler(caseSensitive, regexSearch,
+    /**
+     * Compiles the search expression.
+     * @param searchStr the search expression
+     * @return a {@link Match} object for the expression
+     * @throws ParseError if an error has been encountered while compiling
+     * @see #compile(org.openstreetmap.josm.actions.search.SearchAction.SearchSetting)
+     */
+    public static Match compile(String searchStr) throws ParseError {
+        return new SearchCompiler(false, false,
                 new PushbackTokenizer(
                         new PushbackReader(new StringReader(searchStr))))
-        .parse();
+                .parse();
+    }
+
+    /**
+     * Compiles the search expression.
+     * @param setting the settings to use
+     * @return a {@link Match} object for the expression
+     * @throws ParseError if an error has been encountered while compiling
+     * @see #compile(String)
+     */
+    public static Match compile(SearchAction.SearchSetting setting) throws ParseError {
+        if (setting.mapCSSSearch) {
+            return compileMapCSS(setting.text);
+        }
+        return new SearchCompiler(setting.caseSensitive, setting.regexSearch,
+                new PushbackTokenizer(
+                        new PushbackReader(new StringReader(setting.text))))
+                .parse();
+    }
+
+    static Match compileMapCSS(String mapCSS) throws ParseError {
+        try {
+            final List<Selector> selectors = new MapCSSParser(new StringReader(mapCSS)).selectors();
+            return new Match() {
+                @Override
+                public boolean match(OsmPrimitive osm) {
+                    for (Selector selector : selectors) {
+                        if (selector.matches(new Environment(osm))) {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+            };
+        } catch (ParseException e) {
+            throw new ParseError(tr("Failed to parse MapCSS selector"), e);
+        }
     }
 
     /**
@@ -1500,7 +1592,8 @@ public class SearchCompiler {
                     return unaryFactory.get(key, parseFactor(), tokenizer);
 
                 // key:value form where value is a string (may be OSM key search)
-                return parseKV(key, tokenizer.readTextOrNumber());
+                final String value = tokenizer.readTextOrNumber();
+                return new KeyValue(key, value != null ? value : "", regexSearch, caseSensitive);
             } else if (tokenizer.readIfEqual(Token.QUESTION_MARK))
                 return new BooleanMatch(key, false);
             else {
@@ -1527,22 +1620,6 @@ public class SearchCompiler {
             return fact;
     }
 
-    private Match parseKV(String key, String value) throws ParseError {
-        if (value == null) {
-            value = "";
-        }
-        switch(key) {
-        case "type":
-            return new ExactType(value);
-        case "user":
-            return new UserMatch(value);
-        case "role":
-            return new RoleMatch(value);
-        default:
-            return new KeyValue(key, value, regexSearch, caseSensitive);
-        }
-    }
-
     private static int regexFlags(boolean caseSensitive) {
         int searchFlags = 0;
 
diff --git a/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java b/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
index d7040de..18ac258 100644
--- a/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
@@ -49,7 +49,7 @@ public class ApiPreconditionCheckerHook implements UploadHook {
         return true;
     }
 
-    private boolean checkMaxNodes(Collection<OsmPrimitive> primitives, long maxNodes) {
+    private static boolean checkMaxNodes(Collection<OsmPrimitive> primitives, long maxNodes) {
         for (OsmPrimitive osmPrimitive : primitives) {
             for (String key: osmPrimitive.keySet()) {
                 String value = osmPrimitive.get(key);
diff --git a/src/org/openstreetmap/josm/actions/upload/UploadHook.java b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
index 9585329..d524446 100644
--- a/src/org/openstreetmap/josm/actions/upload/UploadHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
@@ -4,9 +4,11 @@ package org.openstreetmap.josm.actions.upload;
 import org.openstreetmap.josm.data.APIDataSet;
 
 public interface UploadHook {
+
     /**
      * Checks the upload.
      * @param apiDataSet the data to upload
+     * @return {@code true} if upload is possible
      */
     boolean checkUpload(APIDataSet apiDataSet);
 }
diff --git a/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java b/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
index 3556043..fc17a06 100644
--- a/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
+++ b/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java
@@ -38,7 +38,7 @@ public class UploadNotesTask {
 
     private class UploadTask extends PleaseWaitRunnable {
 
-        private boolean isCanceled = false;
+        private boolean isCanceled;
         private Map<Note, Note> updatedNotes = new HashMap<>();
         private Map<Note, Exception> failedNotes = new HashMap<>();
 
@@ -47,7 +47,7 @@ public class UploadNotesTask {
          * @param title message for the user
          * @param monitor progress monitor
          */
-        public UploadTask(String title, ProgressMonitor monitor) {
+        UploadTask(String title, ProgressMonitor monitor) {
             super(title, monitor, false);
         }
 
@@ -81,6 +81,10 @@ public class UploadNotesTask {
 
         private void processNoteComment(ProgressMonitor monitor, OsmApi api, Note note, NoteComment comment) {
             try {
+                if (updatedNotes.containsKey(note)) {
+                    // if note has been created earlier in this task, obtain its real id and not use the placeholder id
+                    note = updatedNotes.get(note);
+                }
                 Note newNote;
                 switch (comment.getNoteAction()) {
                 case opened:
diff --git a/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java b/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
index b85875d..824f351 100644
--- a/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
@@ -108,7 +108,7 @@ public class ValidateUploadHook implements UploadHook {
      * @return <code>true</code>, if the upload should continue. <code>false</code>
      *          if the user requested cancel.
      */
-    private boolean displayErrorScreen(List<TestError> errors) {
+    private static boolean displayErrorScreen(List<TestError> errors) {
         JPanel p = new JPanel(new GridBagLayout());
         ValidatorTreePanel errorPanel = new ValidatorTreePanel(errors);
         errorPanel.expandAll();
diff --git a/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java b/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java
index 51975a8..7fed34e 100644
--- a/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java
+++ b/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java
@@ -28,8 +28,8 @@ public class AddPrimitivesCommand extends Command {
     private Collection<PrimitiveData> toSelect = new ArrayList<>();
 
     // only filled on undo
-    private List<OsmPrimitive> createdPrimitives = null;
-    private Collection<OsmPrimitive> createdPrimitivesToSelect = null;
+    private List<OsmPrimitive> createdPrimitives;
+    private Collection<OsmPrimitive> createdPrimitivesToSelect;
 
     /**
      * Constructs a new {@code AddPrimitivesCommand} to add data to the current edit layer.
diff --git a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
index 28f7d44..3200d84 100644
--- a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
@@ -16,7 +16,7 @@ import java.util.Map;
 
 import javax.swing.Icon;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
@@ -27,12 +27,14 @@ import org.openstreetmap.josm.tools.ImageProvider;
  * adding and modify of values and keys.
  *
  * @author imi
+ * @since 24
  */
 public class ChangePropertyCommand extends Command {
     /**
      * All primitives that are affected with this command.
      */
-    private final List<OsmPrimitive> objects;
+    private final List<OsmPrimitive> objects = new LinkedList<>();
+
     /**
      * Key and value pairs. If value is <code>null</code>, delete all key references with the given
      * key. Otherwise, change the tags of all objects to the given value or create keys of
@@ -47,7 +49,6 @@ public class ChangePropertyCommand extends Command {
      * @param tags the tags to set
      */
     public ChangePropertyCommand(Collection<? extends OsmPrimitive> objects, Map<String, String> tags) {
-        this.objects = new LinkedList<>();
         this.tags = tags;
         init(objects);
     }
@@ -60,7 +61,6 @@ public class ChangePropertyCommand extends Command {
      * @param value the value of the key to set
      */
     public ChangePropertyCommand(Collection<? extends OsmPrimitive> objects, String key, String value) {
-        this.objects = new LinkedList<>();
         this.tags = new HashMap<>(1);
         this.tags.put(key, value);
         init(objects);
@@ -105,8 +105,14 @@ public class ChangePropertyCommand extends Command {
         }
     }
 
-    @Override public boolean executeCommand() {
-        Main.main.getCurrentDataSet().beginUpdate();
+    @Override
+    public boolean executeCommand() {
+        if (objects.isEmpty())
+            return true;
+        final DataSet dataSet = objects.get(0).getDataSet();
+        if (dataSet != null) {
+            dataSet.beginUpdate();
+        }
         try {
             super.executeCommand(); // save old
 
@@ -128,11 +134,14 @@ public class ChangePropertyCommand extends Command {
             }
             return true;
         } finally {
-            Main.main.getCurrentDataSet().endUpdate();
+            if (dataSet != null) {
+                dataSet.endUpdate();
+            }
         }
     }
 
-    @Override public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
+    @Override
+    public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
         modified.addAll(objects);
     }
 
@@ -140,7 +149,7 @@ public class ChangePropertyCommand extends Command {
     public String getDescriptionText() {
         String text;
         if (objects.size() == 1 && tags.size() == 1) {
-            OsmPrimitive primitive = objects.iterator().next();
+            OsmPrimitive primitive = objects.get(0);
             String msg = "";
             Map.Entry<String, String> entry = tags.entrySet().iterator().next();
             if (entry.getValue() == null) {
@@ -193,7 +202,8 @@ public class ChangePropertyCommand extends Command {
         return ImageProvider.get("data", "key");
     }
 
-    @Override public Collection<PseudoCommand> getChildren() {
+    @Override
+    public Collection<PseudoCommand> getChildren() {
         if (objects.size() == 1)
             return null;
         List<PseudoCommand> children = new ArrayList<>();
@@ -217,6 +227,16 @@ public class ChangePropertyCommand extends Command {
     }
 
     /**
+     * Returns the number of objects that will effectively be modified, before the command is executed.
+     * @return the number of objects that will effectively be modified (can be 0)
+     * @see Command#getParticipatingPrimitives()
+     * @since 8945
+     */
+    public final int getObjectsNumber() {
+        return objects.size();
+    }
+
+    /**
      * Returns the tags to set (key/value pairs).
      * @return the tags to set (key/value pairs)
      */
diff --git a/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java b/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
index c8d41d7..2870fd1 100644
--- a/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
@@ -84,10 +84,10 @@ public class ChangePropertyKeyCommand extends Command {
         String text = tr("Replace \"{0}\" by \"{1}\" for", key, newKey);
         if (objects.size() == 1) {
             NameVisitor v = new NameVisitor();
-            objects.iterator().next().accept(v);
-            text += " "+tr(v.className)+" "+v.name;
+            objects.get(0).accept(v);
+            text += ' '+tr(v.className)+' '+v.name;
         } else {
-            text += " "+objects.size()+" "+trn("object", "objects", objects.size());
+            text += ' '+objects.size()+' '+trn("object", "objects", objects.size());
         }
         return text;
     }
diff --git a/src/org/openstreetmap/josm/command/Command.java b/src/org/openstreetmap/josm/command/Command.java
index dbfb04c..5fbf116 100644
--- a/src/org/openstreetmap/josm/command/Command.java
+++ b/src/org/openstreetmap/josm/command/Command.java
@@ -219,7 +219,7 @@ public abstract class Command extends PseudoCommand {
 
     /**
      * Replies the layer this command is (or was) applied to.
-     *
+     * @return the layer this command is (or was) applied to
      */
     protected OsmDataLayer getLayer() {
         return layer;
@@ -239,8 +239,10 @@ public abstract class Command extends PseudoCommand {
 
     /**
      * Return the primitives that take part in this command.
+     * The collection is computed during execution.
      */
-    @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
+    @Override
+    public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
         return cloneMap.keySet();
     }
 
diff --git a/src/org/openstreetmap/josm/command/DeleteCommand.java b/src/org/openstreetmap/josm/command/DeleteCommand.java
index dc7322a..71b766a 100644
--- a/src/org/openstreetmap/josm/command/DeleteCommand.java
+++ b/src/org/openstreetmap/josm/command/DeleteCommand.java
@@ -301,12 +301,11 @@ public class DeleteCommand extends Command {
      *    <li>it is untagged (see {@link Node#isTagged()}</li>
      *    <li>it is not referred to by other non-deleted primitives outside of  <code>primitivesToDelete</code></li>
      * </ul>
-     * @param layer  the layer in whose context primitives are deleted
      * @param primitivesToDelete  the primitives to delete
      * @return the collection of nodes referred to by primitives in <code>primitivesToDelete</code> which
      * can be deleted too
      */
-    protected static Collection<Node> computeNodesToDelete(OsmDataLayer layer, Collection<OsmPrimitive> primitivesToDelete) {
+    protected static Collection<Node> computeNodesToDelete(Collection<OsmPrimitive> primitivesToDelete) {
         Collection<Node> nodesToDelete = new HashSet<>();
         for (Way way : OsmPrimitive.getFilteredList(primitivesToDelete, Way.class)) {
             for (Node n : way.getNodes()) {
@@ -378,7 +377,7 @@ public class DeleteCommand extends Command {
 
         if (alsoDeleteNodesInWay) {
             // delete untagged nodes only referenced by primitives in primitivesToDelete, too
-            Collection<Node> nodesToDelete = computeNodesToDelete(layer, primitivesToDelete);
+            Collection<Node> nodesToDelete = computeNodesToDelete(primitivesToDelete);
             primitivesToDelete.addAll(nodesToDelete);
         }
 
diff --git a/src/org/openstreetmap/josm/command/PurgeCommand.java b/src/org/openstreetmap/josm/command/PurgeCommand.java
index 8bb4220..50fdbef 100644
--- a/src/org/openstreetmap/josm/command/PurgeCommand.java
+++ b/src/org/openstreetmap/josm/command/PurgeCommand.java
@@ -141,6 +141,7 @@ public class PurgeCommand extends Command {
     /**
      * Sorts a collection of primitives such that for each object
      * its referrers come later in the sorted collection.
+     * @return sorted list
      */
     public static List<OsmPrimitive> topoSort(Collection<OsmPrimitive> sel) {
         Set<OsmPrimitive> in = new HashSet<>(sel);
diff --git a/src/org/openstreetmap/josm/command/RotateCommand.java b/src/org/openstreetmap/josm/command/RotateCommand.java
index 07c088c..32c6031 100644
--- a/src/org/openstreetmap/josm/command/RotateCommand.java
+++ b/src/org/openstreetmap/josm/command/RotateCommand.java
@@ -24,12 +24,12 @@ public class RotateCommand extends TransformNodesCommand {
     /**
      * angle of rotation starting click to pivot
      */
-    private double startAngle = 0.0;
+    private double startAngle;
 
     /**
      * computed rotation angle between starting click and current mouse pos
      */
-    private double rotationAngle = 0.0;
+    private double rotationAngle;
 
     /**
      * Creates a RotateCommand.
@@ -46,7 +46,8 @@ public class RotateCommand extends TransformNodesCommand {
     }
 
     /**
-     * Get angle between the horizontal axis and the line formed by the pivot and give points.
+     * Get angle between the horizontal axis and the line formed by the pivot and given point.
+     * @return angle between the horizontal axis and the line formed by the pivot and given point
      **/
     protected final double getAngle(EastNorth currentEN) {
         if (pivot == null)
diff --git a/src/org/openstreetmap/josm/command/ScaleCommand.java b/src/org/openstreetmap/josm/command/ScaleCommand.java
index 41f051a..0411ad4 100644
--- a/src/org/openstreetmap/josm/command/ScaleCommand.java
+++ b/src/org/openstreetmap/josm/command/ScaleCommand.java
@@ -23,7 +23,7 @@ public class ScaleCommand extends TransformNodesCommand {
     /**
      * World position of the mouse when the user started the command.
      */
-    private EastNorth startEN = null;
+    private EastNorth startEN;
 
     /**
      * Creates a ScaleCommand.
diff --git a/src/org/openstreetmap/josm/command/SequenceCommand.java b/src/org/openstreetmap/josm/command/SequenceCommand.java
index d14503a..d2f443a 100644
--- a/src/org/openstreetmap/josm/command/SequenceCommand.java
+++ b/src/org/openstreetmap/josm/command/SequenceCommand.java
@@ -26,7 +26,7 @@ public class SequenceCommand extends Command {
     private boolean sequenceComplete;
     private final String name;
     /** Determines if the sequence execution should continue after one of its commands fails. */
-    public boolean continueOnError = false;
+    public boolean continueOnError;
 
     /**
      * Create the command by specifying the list of commands to execute.
diff --git a/src/org/openstreetmap/josm/command/TransformNodesCommand.java b/src/org/openstreetmap/josm/command/TransformNodesCommand.java
index 53725a3..831dd02 100644
--- a/src/org/openstreetmap/josm/command/TransformNodesCommand.java
+++ b/src/org/openstreetmap/josm/command/TransformNodesCommand.java
@@ -118,6 +118,7 @@ public abstract class TransformNodesCommand extends Command {
 
     /**
      * Get the nodes with the current transformation applied.
+     * @return nodes with the current transformation applied
      */
     public Collection<Node> getTransformedNodes() {
         return nodes;
@@ -126,6 +127,7 @@ public abstract class TransformNodesCommand extends Command {
     /**
      * Get the center of the nodes under modification.
      * It's just the barycenter.
+     * @return center east/north of the nodes under modification
      * @see org.openstreetmap.josm.tools.Geometry#getCentroid(java.util.List)
      */
     public EastNorth getNodesCenter() {
diff --git a/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java b/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
index 3e6a6ee..e803ef5 100644
--- a/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
@@ -21,7 +21,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
  * @since 1857
  */
 public class ConflictAddCommand extends Command {
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
      * Constructs a new {@code ConflictAddCommand}.
@@ -60,7 +60,7 @@ public class ConflictAddCommand extends Command {
 
     @Override
     public void undoCommand() {
-        if (!Main.map.mapView.hasLayer(getLayer())) {
+        if (Main.isDisplayingMapView() && !Main.map.mapView.hasLayer(getLayer())) {
             Main.warn(tr("Layer ''{0}'' does not exist any more. Cannot remove conflict for object ''{1}''.",
                     getLayer().getName(),
                     conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance())
diff --git a/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
index d83504d..88dfed9 100644
--- a/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ConflictResolveCommand.java
@@ -19,7 +19,7 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
  */
 public abstract class ConflictResolveCommand extends Command {
     /** the list of resolved conflicts */
-    private ConflictCollection resolvedConflicts;
+    private final ConflictCollection resolvedConflicts;
 
     /**
      * Constructs a new {@code ConflictResolveCommand} in the context of the current edit layer, if any.
@@ -67,15 +67,17 @@ public abstract class ConflictResolveCommand extends Command {
     public void undoCommand() {
         super.undoCommand();
 
-        if (!Main.map.mapView.hasLayer(getLayer())) {
-            Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
-                    this.toString(),
-                    getLayer().toString()
-            ));
-            return;
-        }
+        if (Main.isDisplayingMapView()) {
+            if (!Main.map.mapView.hasLayer(getLayer())) {
+                Main.warn(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
+                        this.toString(),
+                        getLayer().toString()
+                ));
+                return;
+            }
 
-        Main.map.mapView.setActiveLayer(getLayer());
+            Main.map.mapView.setActiveLayer(getLayer());
+        }
         reconstituteConflicts();
     }
 
diff --git a/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java
index 258b500..125e3c8 100644
--- a/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommand.java
@@ -20,7 +20,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
 public class CoordinateConflictResolveCommand extends ConflictResolveCommand {
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the merge decision */
     private final MergeDecisionType decision;
diff --git a/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java
index 459093c..9d6df8e 100644
--- a/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommand.java
@@ -20,7 +20,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
 public class DeletedStateConflictResolveCommand extends ConflictResolveCommand {
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the merge decision */
     private final MergeDecisionType decision;
diff --git a/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
index 767d131..98c7fd8 100644
--- a/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommand.java
@@ -21,7 +21,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
 public class ModifiedConflictResolveCommand extends ConflictResolveCommand {
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
      * constructor
diff --git a/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
index 8d63078..3d81649 100644
--- a/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
@@ -21,7 +21,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
  */
 public class TagConflictResolveCommand extends ConflictResolveCommand {
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /** the list of merge decisions, represented as {@link TagMergeItem}s */
     private final List<TagMergeItem> mergeItems;
diff --git a/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
index 4016d78..b81cd72 100644
--- a/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java
@@ -21,7 +21,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
 public class VersionConflictResolveCommand extends ConflictResolveCommand {
 
     /** the conflict to resolve */
-    private Conflict<? extends OsmPrimitive> conflict;
+    private final Conflict<? extends OsmPrimitive> conflict;
 
     /**
      * constructor
diff --git a/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java b/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
index 2c95656..3ea0002 100644
--- a/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommand.java
@@ -21,7 +21,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
  */
 public class WayNodesConflictResolverCommand extends ConflictResolveCommand {
     /** the conflict to resolve */
-    private Conflict<Way> conflict;
+    private final Conflict<Way> conflict;
 
     /** the list of merged nodes. This becomes the list of news of my way after the
      *  command is executed
diff --git a/src/org/openstreetmap/josm/corrector/CorrectionTable.java b/src/org/openstreetmap/josm/corrector/CorrectionTable.java
index 7e94b0f..a99662b 100644
--- a/src/org/openstreetmap/josm/corrector/CorrectionTable.java
+++ b/src/org/openstreetmap/josm/corrector/CorrectionTable.java
@@ -31,7 +31,7 @@ public abstract class CorrectionTable<T extends CorrectionTableModel<?>>
         }
     }
 
-    private static volatile BoldRenderer boldRenderer = null;
+    private static volatile BoldRenderer boldRenderer;
 
     protected CorrectionTable(T correctionTableModel) {
         super(correctionTableModel);
diff --git a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
index 720b741..ecba252 100644
--- a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
@@ -14,6 +14,7 @@ import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
diff --git a/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java b/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
index eff5645..62e035a 100644
--- a/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
@@ -20,6 +20,7 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.tools.UserCancelException;
 
 /**
  * A ReverseWayTagCorrector handles necessary corrections of tags
@@ -65,10 +66,10 @@ public class ReverseWayTagCorrector extends TagCorrector<Way> {
         private final String b;
         private final Pattern pattern;
 
-        public StringSwitcher(String a, String b) {
+        StringSwitcher(String a, String b) {
             this.a = a;
             this.b = b;
-            this.pattern = getPatternFor(a + "|" + b);
+            this.pattern = getPatternFor(a + '|' + b);
         }
 
         public String apply(String text) {
diff --git a/src/org/openstreetmap/josm/corrector/TagCorrector.java b/src/org/openstreetmap/josm/corrector/TagCorrector.java
index 7b98a20..bb5e154 100644
--- a/src/org/openstreetmap/josm/corrector/TagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/TagCorrector.java
@@ -31,6 +31,7 @@ import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.UserCancelException;
 
 /**
  * Abstract base class for automatic tag corrections.
@@ -83,7 +84,7 @@ public abstract class TagCorrector<P extends OsmPrimitive> {
                 p.add(propertiesLabel, GBC.std());
 
                 final JLabel primitiveLabel = new JLabel(
-                        primitive.getDisplayName(DefaultNameFormatter.getInstance()) + ":",
+                        primitive.getDisplayName(DefaultNameFormatter.getInstance()) + ':',
                         ImageProvider.get(primitive.getDisplayType()),
                         JLabel.LEFT
                 );
diff --git a/src/org/openstreetmap/josm/corrector/UserCancelException.java b/src/org/openstreetmap/josm/corrector/UserCancelException.java
deleted file mode 100644
index 98745f1..0000000
--- a/src/org/openstreetmap/josm/corrector/UserCancelException.java
+++ /dev/null
@@ -1,6 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.corrector;
-
-public class UserCancelException extends Exception {
-
-}
diff --git a/src/org/openstreetmap/josm/data/APIDataSet.java b/src/org/openstreetmap/josm/data/APIDataSet.java
index 4a07e77..c168fe3 100644
--- a/src/org/openstreetmap/josm/data/APIDataSet.java
+++ b/src/org/openstreetmap/josm/data/APIDataSet.java
@@ -275,7 +275,7 @@ public class APIDataSet {
         private List<Relation> uploadOrder;
         private final boolean newOrUndeleted;
 
-        public RelationUploadDependencyGraph(Collection<Relation> relations, boolean newOrUndeleted) {
+        RelationUploadDependencyGraph(Collection<Relation> relations, boolean newOrUndeleted) {
             this.newOrUndeleted = newOrUndeleted;
             build(relations);
         }
diff --git a/src/org/openstreetmap/josm/data/AutosaveTask.java b/src/org/openstreetmap/josm/data/AutosaveTask.java
index 9f4eb01..040b7b7 100644
--- a/src/org/openstreetmap/josm/data/AutosaveTask.java
+++ b/src/org/openstreetmap/josm/data/AutosaveTask.java
@@ -117,7 +117,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
         }
     }
 
-    private String getFileName(String layerName, int index) {
+    private static String getFileName(String layerName, int index) {
         String result = layerName;
         for (char illegalCharacter : ILLEGAL_CHARACTERS) {
             result = result.replaceAll(Pattern.quote(String.valueOf(illegalCharacter)),
@@ -155,7 +155,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
         Date now = new Date();
         while (true) {
             String filename = String.format("%1$s_%2$tY%2$tm%2$td_%2$tH%2$tM%2$tS%2$tL%3$s",
-                    layer.layerFileName, now, index == 0 ? "" : "_" + index);
+                    layer.layerFileName, now, index == 0 ? "" : '_' + index);
             File result = new File(autosaveDir, filename+".osm");
             try {
                 if (result.createNewFile()) {
diff --git a/src/org/openstreetmap/josm/data/Bounds.java b/src/org/openstreetmap/josm/data/Bounds.java
index f132a67..88ae881 100644
--- a/src/org/openstreetmap/josm/data/Bounds.java
+++ b/src/org/openstreetmap/josm/data/Bounds.java
@@ -261,15 +261,15 @@ public class Bounds {
         return new BBox(minLon, minLat, maxLon, maxLat);
     }
 
-    @Override public String toString() {
-        return "Bounds["+minLat+","+minLon+","+maxLat+","+maxLon+"]";
+    @Override
+    public String toString() {
+        return "Bounds["+minLat+','+minLon+','+maxLat+','+maxLon+']';
     }
 
     public String toShortString(DecimalFormat format) {
-        return
-        format.format(minLat) + " "
+        return format.format(minLat) + ' '
         + format.format(minLon) + " / "
-        + format.format(maxLat) + " "
+        + format.format(maxLat) + ' '
         + format.format(maxLon);
     }
 
diff --git a/src/org/openstreetmap/josm/data/CustomConfigurator.java b/src/org/openstreetmap/josm/data/CustomConfigurator.java
index 33dd90f..57a11dc 100644
--- a/src/org/openstreetmap/josm/data/CustomConfigurator.java
+++ b/src/org/openstreetmap/josm/data/CustomConfigurator.java
@@ -320,7 +320,7 @@ public final class CustomConfigurator {
         }
     }
 
-    private static boolean busy = false;
+    private static boolean busy;
 
     public static void pluginOperation(String install, String uninstall, String delete)  {
         final List<String> installList = new ArrayList<>();
@@ -465,7 +465,7 @@ public final class CustomConfigurator {
                 engine.eval("API={}; API.pref={}; API.fragments={};");
 
                 engine.eval("homeDir='"+normalizeDirName(Main.pref.getPreferencesDirectory().getAbsolutePath()) +"';");
-                engine.eval("josmVersion="+Version.getInstance().getVersion()+";");
+                engine.eval("josmVersion="+Version.getInstance().getVersion()+';');
                 String className = CustomConfigurator.class.getName();
                 engine.eval("API.messageBox="+className+".messageBox");
                 engine.eval("API.askText=function(text) { return String("+className+".askForText(text));}");
@@ -613,7 +613,7 @@ public final class CustomConfigurator {
             processDownloadOperation(address, path, dir, "true".equals(mkdir), "true".equals(unzip));
         }
 
-        private void processPluginInstallElement(Element elem) {
+        private static void processPluginInstallElement(Element elem) {
             String install = elem.getAttribute("install");
             String uninstall = elem.getAttribute("remove");
             String delete = elem.getAttribute("delete");
@@ -738,8 +738,8 @@ public final class CustomConfigurator {
             return tmpPref;
         }
 
-        private String normalizeDirName(String dir) {
-            String s = dir.replace("\\", "/");
+        private static String normalizeDirName(String dir) {
+            String s = dir.replace('\\', '/');
             if (s.endsWith("/")) s = s.substring(0, s.length()-1);
             return s;
         }
diff --git a/src/org/openstreetmap/josm/data/DataSource.java b/src/org/openstreetmap/josm/data/DataSource.java
index adaa62d..5ec16b6 100644
--- a/src/org/openstreetmap/josm/data/DataSource.java
+++ b/src/org/openstreetmap/josm/data/DataSource.java
@@ -70,7 +70,7 @@ public class DataSource {
 
     @Override
     public String toString() {
-        return "DataSource [bounds=" + bounds + ", origin=" + origin + "]";
+        return "DataSource [bounds=" + bounds + ", origin=" + origin + ']';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
index 701b458..c657563 100644
--- a/src/org/openstreetmap/josm/data/Preferences.java
+++ b/src/org/openstreetmap/josm/data/Preferences.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.data;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
+import java.awt.GraphicsEnvironment;
 import java.awt.Toolkit;
 import java.io.BufferedReader;
 import java.io.File;
@@ -94,22 +95,30 @@ import org.xml.sax.SAXException;
  * @since 74
  */
 public class Preferences {
+
+    private static final String[] OBSOLETE_PREF_KEYS = {
+            "remote.control.host", // replaced by individual values for IPv4 and IPv6. To remove end of 2015
+            "osm.notes.enableDownload", // was used prior to r8071 when notes was an hidden feature. To remove end of 2015
+            "mappaint.style.migration.switchedToMapCSS", // was used prior to 8315 for MapCSS switch. To remove end of 2015
+            "mappaint.style.migration.changedXmlName" // was used prior to 8315 for MapCSS switch. To remove end of 2015
+    };
+
     /**
      * Internal storage for the preference directory.
      * Do not access this variable directly!
      * @see #getPreferencesDirectory()
      */
-    private File preferencesDir = null;
+    private File preferencesDir;
 
     /**
      * Internal storage for the cache directory.
      */
-    private File cacheDir = null;
+    private File cacheDir;
 
     /**
      * Internal storage for the user data directory.
      */
-    private File userdataDir = null;
+    private File userdataDir;
 
     /**
      * Determines if preferences file is saved each time a property is changed.
@@ -520,7 +529,7 @@ public class Preferences {
         private final Setting<?> oldValue;
         private final Setting<?> newValue;
 
-        public DefaultPreferenceChangeEvent(String key, Setting<?> oldValue, Setting<?> newValue) {
+        DefaultPreferenceChangeEvent(String key, Setting<?> oldValue, Setting<?> newValue) {
             this.key = key;
             this.oldValue = oldValue;
             this.newValue = newValue;
@@ -679,7 +688,7 @@ public class Preferences {
         return cacheDir;
     }
 
-    private void addPossibleResourceDir(Set<String> locations, String s) {
+    private static void addPossibleResourceDir(Set<String> locations, String s) {
         if (s != null) {
             if (!s.endsWith(File.separator)) {
                 s += File.separator;
@@ -787,7 +796,7 @@ public class Preferences {
 
     public synchronized boolean getBoolean(final String key, final String specName, final boolean def) {
         boolean generic = getBoolean(key, def);
-        String skey = key+"."+specName;
+        String skey = key+'.'+specName;
         Setting<?> prop = settingsMap.get(skey);
         if (prop instanceof StringSetting)
             return Boolean.parseBoolean(((StringSetting) prop).getValue());
@@ -827,6 +836,7 @@ public class Preferences {
 
     /**
      * Called after every put. In case of a problem, do nothing but output the error in log.
+     * @throws IOException if any I/O error occurs
      */
     public void save() throws IOException {
         /* currently unused, but may help to fix configuration issues in future */
@@ -857,7 +867,7 @@ public class Preferences {
         setCorrectPermissions(backupFile);
     }
 
-    private void setCorrectPermissions(File file) {
+    private static void setCorrectPermissions(File file) {
         if (!file.setReadable(false, false) && Main.isDebugEnabled()) {
             Main.debug(tr("Unable to set file non-readable {0}", file.getAbsolutePath()));
         }
@@ -1075,7 +1085,7 @@ public class Preferences {
     }
 
     public synchronized int getInteger(String key, String specName, int def) {
-        String v = get(key+"."+specName);
+        String v = get(key+'.'+specName);
         if (v.isEmpty())
             v = get(key, Integer.toString(def));
         if (v.isEmpty())
@@ -1327,7 +1337,7 @@ public class Preferences {
         return putListOfStructs(key, serializeListOfStructs(val, klass));
     }
 
-    private <T> Collection<Map<String, String>> serializeListOfStructs(Collection<T> l, Class<T> klass) {
+    private static <T> Collection<Map<String, String>> serializeListOfStructs(Collection<T> l, Class<T> klass) {
         if (l == null)
             return null;
         Collection<Map<String, String>> vals = new ArrayList<>();
@@ -1392,7 +1402,7 @@ public class Preferences {
                 Object defaultFieldValue = f.get(structPrototype);
                 if (fieldValue != null) {
                     if (f.getAnnotation(writeExplicitly.class) != null || !Objects.equals(fieldValue, defaultFieldValue)) {
-                        String key = f.getName().replace("_", "-");
+                        String key = f.getName().replace('_', '-');
                         if (fieldValue instanceof Map) {
                             hash.put(key, mapToJson((Map) fieldValue));
                         } else {
@@ -1418,7 +1428,7 @@ public class Preferences {
             Object value = null;
             Field f;
             try {
-                f = klass.getDeclaredField(key_value.getKey().replace("-", "_"));
+                f = klass.getDeclaredField(key_value.getKey().replace('-', '_'));
             } catch (NoSuchFieldException ex) {
                 continue;
             } catch (SecurityException ex) {
@@ -1482,16 +1492,20 @@ public class Preferences {
         Utils.updateSystemProperty("http.agent", Version.getInstance().getAgentString());
         Utils.updateSystemProperty("user.language", get("language"));
         // Workaround to fix a Java bug.
-        // Force AWT toolkit to update its internal preferences (fix #3645).
+        // Force AWT toolkit to update its internal preferences (fix #6345).
         // This ugly hack comes from Sun bug database: https://bugs.openjdk.java.net/browse/JDK-6292739
-        try {
-            Field field = Toolkit.class.getDeclaredField("resources");
-            field.setAccessible(true);
-            field.set(null, ResourceBundle.getBundle("sun.awt.resources.awt"));
-        } catch (Exception e) {
-            // Ignore all exceptions
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
+        if (!GraphicsEnvironment.isHeadless()) {
+            try {
+                Field field = Toolkit.class.getDeclaredField("resources");
+                field.setAccessible(true);
+                field.set(null, ResourceBundle.getBundle("sun.awt.resources.awt"));
+            } catch (Exception | InternalError e) {
+                // Ignore all exceptions, including internal error raised by Java 9 Jigsaw EA:
+                // java.lang.InternalError: legacy getBundle can't be used to find sun.awt.resources.awt in module java.desktop
+                // InternalError catch to remove when https://bugs.openjdk.java.net/browse/JDK-8136804 is resolved
+                if (Main.isTraceEnabled()) {
+                    Main.trace(e.getMessage());
+                }
             }
         }
         // Workaround to fix a Java "feature"
@@ -1503,6 +1517,7 @@ public class Preferences {
         // Force Java 7 to use old sorting algorithm of Arrays.sort (fix #8712).
         // See Oracle bug database: https://bugs.openjdk.java.net/browse/JDK-7075600
         // and https://bugs.openjdk.java.net/browse/JDK-6923200
+        // The bug seems to have been fixed in Java 8, to remove during transition
         if (getBoolean("jdk.Arrays.useLegacyMergeSort", !Version.getInstance().isLocalBuild())) {
             Utils.updateSystemProperty("java.util.Arrays.useLegacyMergeSort", "true");
         }
@@ -1715,7 +1730,7 @@ public class Preferences {
         private boolean noPassword;
         private String key;
 
-        public SettingToXml(StringBuilder b, boolean noPassword) {
+        SettingToXml(StringBuilder b, boolean noPassword) {
             this.b = b;
             this.noPassword = noPassword;
         }
@@ -1831,13 +1846,7 @@ public class Preferences {
             }
         }
 
-        String[] obsolete = {
-                "remote.control.host", // replaced by individual values for IPv4 and IPv6. To remove end of 2015
-                "osm.notes.enableDownload", // was used prior to r8071 when notes was an hidden feature. To remove end of 2015
-                "mappaint.style.migration.switchedToMapCSS", // was used prior to 8315 for MapCSS switch. To remove end of 2015
-                "mappaint.style.migration.changedXmlName" // was used prior to 8315 for MapCSS switch. To remove end of 2015
-        };
-        for (String key : obsolete) {
+        for (String key : OBSOLETE_PREF_KEYS) {
             if (settingsMap.containsKey(key)) {
                 settingsMap.remove(key);
                 Main.info(tr("Preference setting {0} has been removed since it is no longer used.", key));
diff --git a/src/org/openstreetmap/josm/data/ProjectionBounds.java b/src/org/openstreetmap/josm/data/ProjectionBounds.java
index 6cd739a..b8ddfaf 100644
--- a/src/org/openstreetmap/josm/data/ProjectionBounds.java
+++ b/src/org/openstreetmap/josm/data/ProjectionBounds.java
@@ -66,7 +66,7 @@ public class ProjectionBounds {
 
     @Override
     public String toString() {
-        return "ProjectionBounds["+minEast+","+minNorth+","+maxEast+","+maxNorth+"]";
+        return "ProjectionBounds["+minEast+","+minNorth+","+maxEast+","+maxNorth+']';
     }
 
     /**
@@ -88,6 +88,10 @@ public class ProjectionBounds {
         return new EastNorth(maxEast, maxNorth);
     }
 
+    /**
+     * Determines if the bounds area is not null
+     * @return {@code true} if the area is not null
+     */
     public boolean hasExtend() {
         return !Utils.equalsEpsilon(minEast, maxEast) || !Utils.equalsEpsilon(minNorth, maxNorth);
     }
diff --git a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
index 737b20d..060827f 100644
--- a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
+++ b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
@@ -237,16 +237,16 @@ public class SystemOfMeasurement {
                 && a < (bValue*bValue) / (aValue*aValue)) || customAreaOnly)
             return formatText(area / areaCustomValue, areaCustomName, format);
         else if (!lowerOnly && a >= (bValue*bValue) / (aValue*aValue))
-            return formatText(area / (bValue * bValue), bName + "\u00b2", format);
+            return formatText(area / (bValue * bValue), bName + '\u00b2', format);
         else if (a < threshold)
-            return "< " + formatText(threshold, aName + "\u00b2", format);
+            return "< " + formatText(threshold, aName + '\u00b2', format);
         else
-            return formatText(a, aName + "\u00b2", format);
+            return formatText(a, aName + '\u00b2', format);
     }
 
     private static String formatText(double v, String unit, NumberFormat format) {
         if (format != null) {
-            return format.format(v) + " " + unit;
+            return format.format(v) + ' ' + unit;
         }
         return String.format(Locale.US, "%." + (v < 9.999999 ? 2 : 1) + "f %s", v, unit);
     }
diff --git a/src/org/openstreetmap/josm/data/Version.java b/src/org/openstreetmap/josm/data/Version.java
index 5728be1..252a554 100644
--- a/src/org/openstreetmap/josm/data/Version.java
+++ b/src/org/openstreetmap/josm/data/Version.java
@@ -225,14 +225,14 @@ public class Version {
         int v = getVersion();
         String s = (v == JOSM_UNKNOWN_VERSION) ? "UNKNOWN" : Integer.toString(v);
         if (buildName != null) {
-            s += " " + buildName;
+            s += ' ' + buildName;
         }
         if (isLocalBuild() && v != JOSM_UNKNOWN_VERSION) {
             s += " SVN";
         }
-        String result = "JOSM/1.5 ("+ s+" "+LanguageInfo.getJOSMLocaleCode()+")";
+        String result = "JOSM/1.5 ("+ s+' '+LanguageInfo.getJOSMLocaleCode()+")";
         if (includeOsDetails && Main.platform != null) {
-            result += " " + Main.platform.getOSDescription();
+            result += ' ' + Main.platform.getOSDescription();
         }
         return result;
     }
diff --git a/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java b/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
index 8420b71..eafb3fe 100644
--- a/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
+++ b/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
@@ -16,11 +16,11 @@ import javax.imageio.ImageIO;
 public class BufferedImageCacheEntry extends CacheEntry {
     private static final long serialVersionUID = 1L; //version
     // transient to avoid serialization, volatile to avoid synchronization of whole getImage() method
-    private transient volatile BufferedImage img = null;
-    private transient volatile boolean writtenToDisk = false;
+    private transient volatile BufferedImage img;
+    private transient volatile boolean writtenToDisk;
     // we need to have separate control variable, to know, if we already tried to load the image, as img might be null
     // after we loaded image, as for example, when image file is malformed (eg. HTML file)
-    private transient volatile boolean imageLoaded = false;
+    private transient volatile boolean imageLoaded;
 
     /**
      *
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
index c9456bc..d83a8d8 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
@@ -37,11 +37,11 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 public final class JCSCacheManager {
     private static final Logger LOG = FeatureAdapter.getLogger(JCSCacheManager.class.getCanonicalName());
 
-    private static volatile CompositeCacheManager cacheManager = null;
+    private static volatile CompositeCacheManager cacheManager;
     private static long maxObjectTTL        = -1;
     private static final String PREFERENCE_PREFIX = "jcs.cache";
     private static final AuxiliaryCacheFactory diskCacheFactory = new IndexedDiskCacheFactory();
-    private static FileLock cacheDirLock = null;
+    private static FileLock cacheDirLock;
 
     /**
      * default objects to be held in memory by JCS caches (per region)
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
index b3c560e..28b0c97 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
@@ -88,8 +88,8 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
 
     private ICacheAccess<K, V> cache;
     private ICacheElement<K, V> cacheElement;
-    protected V cacheData = null;
-    protected CacheEntryAttributes attributes = null;
+    protected V cacheData;
+    protected CacheEntryAttributes attributes;
 
     // HTTP connection parameters
     private int connectTimeout;
@@ -97,7 +97,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
     private Map<String, String> headers;
     private ThreadPoolExecutor downloadJobExecutor;
     private Runnable finishTask;
-    private boolean force = false;
+    private boolean force;
 
     /**
      * @param cache cache instance that we will work on
diff --git a/src/org/openstreetmap/josm/data/conflict/Conflict.java b/src/org/openstreetmap/josm/data/conflict/Conflict.java
index 73d023a..1fbbafa 100644
--- a/src/org/openstreetmap/josm/data/conflict/Conflict.java
+++ b/src/org/openstreetmap/josm/data/conflict/Conflict.java
@@ -126,6 +126,6 @@ public class  Conflict<T extends OsmPrimitive> {
 
     @Override
     public String toString() {
-        return "Conflict [my=" + my + ", their=" + their + "]";
+        return "Conflict [my=" + my + ", their=" + their + ']';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java b/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
index aa5eaa2..3f2ed90 100644
--- a/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
+++ b/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
@@ -45,7 +45,7 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
 
         private final Class<? extends OsmPrimitive> c;
 
-        public FilterPredicate(Class<? extends OsmPrimitive> c) {
+        FilterPredicate(Class<? extends OsmPrimitive> c) {
             this.c = c;
         }
 
diff --git a/src/org/openstreetmap/josm/data/coor/CachedLatLon.java b/src/org/openstreetmap/josm/data/coor/CachedLatLon.java
index 33497b1..b847b19 100644
--- a/src/org/openstreetmap/josm/data/coor/CachedLatLon.java
+++ b/src/org/openstreetmap/josm/data/coor/CachedLatLon.java
@@ -62,6 +62,6 @@ public class CachedLatLon extends LatLon {
 
     @Override
     public String toString() {
-        return "CachedLatLon[lat="+lat()+",lon="+lon()+"]";
+        return "CachedLatLon[lat="+lat()+",lon="+lon()+']';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/coor/EastNorth.java b/src/org/openstreetmap/josm/data/coor/EastNorth.java
index 6dba118..ad9f28b 100644
--- a/src/org/openstreetmap/josm/data/coor/EastNorth.java
+++ b/src/org/openstreetmap/josm/data/coor/EastNorth.java
@@ -44,19 +44,6 @@ public class EastNorth extends Coordinate {
     }
 
     /**
-     * Subtracts the coordinates of this EastNorth instance from the other one.
-     * <p>
-     * This produces result = en2 - this.
-     * @param en2 The instance to subtract this one from.
-     * @return The new EastNorth position.
-     * @deprecated use {@code subtract} on the other EastNorth instead
-     */
-    @Deprecated
-    public EastNorth sub(EastNorth en2) {
-        return en2.subtract(this);
-    }
-
-    /**
      * Subtracts an east/north value from this point.
      * @param other The other value to subtract from this.
      * @return A point with the new coordinates.
@@ -161,8 +148,9 @@ public class EastNorth extends Coordinate {
         return new EastNorth(nx, ny);
     }
 
-    @Override public String toString() {
-        return "EastNorth[e="+x+", n="+y+"]";
+    @Override
+    public String toString() {
+        return "EastNorth[e="+x+", n="+y+']';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/coor/LatLon.java b/src/org/openstreetmap/josm/data/coor/LatLon.java
index af90583..f5125a1 100644
--- a/src/org/openstreetmap/josm/data/coor/LatLon.java
+++ b/src/org/openstreetmap/josm/data/coor/LatLon.java
@@ -150,7 +150,7 @@ public class LatLon extends Coordinate {
             sDegrees = Integer.toString(tDegree+1);
         }
 
-        return sDegrees + "\u00B0" + sMinutes + "\'" + sSeconds + "\"";
+        return sDegrees + '\u00B0' + sMinutes + '\'' + sSeconds + '\"';
     }
 
     /**
@@ -172,7 +172,7 @@ public class LatLon extends Coordinate {
             sDegrees = Integer.toString(tDegree+1);
         }
 
-        return sDegrees + "\u00B0" + sMinutes + "\'";
+        return sDegrees + '\u00B0' + sMinutes + '\'';
     }
 
     /**
@@ -324,7 +324,7 @@ public class LatLon extends Coordinate {
     public String toDisplayString() {
         NumberFormat nf = NumberFormat.getInstance();
         nf.setMaximumFractionDigits(5);
-        return "lat=" + nf.format(lat()) + "\u00B0, lon=" + nf.format(lon()) + "\u00B0";
+        return "lat=" + nf.format(lat()) + "\u00B0, lon=" + nf.format(lon()) + '\u00B0';
     }
 
     /**
@@ -369,8 +369,9 @@ public class LatLon extends Coordinate {
         return super.distanceSq(ll);
     }
 
-    @Override public String toString() {
-        return "LatLon[lat="+lat()+",lon="+lon()+"]";
+    @Override
+    public String toString() {
+        return "LatLon[lat="+lat()+",lon="+lon()+']';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/gpx/WayPoint.java b/src/org/openstreetmap/josm/data/gpx/WayPoint.java
index dedf7c4..c73fb4f 100644
--- a/src/org/openstreetmap/josm/data/gpx/WayPoint.java
+++ b/src/org/openstreetmap/josm/data/gpx/WayPoint.java
@@ -94,7 +94,7 @@ public class WayPoint extends WithAttributes implements Comparable<WayPoint>, Te
 
     @Override
     public String toString() {
-        return "WayPoint (" + (attr.containsKey(GPX_NAME) ? get(GPX_NAME) + ", " : "") + getCoor() + ", " + attr + ")";
+        return "WayPoint (" + (attr.containsKey(GPX_NAME) ? get(GPX_NAME) + ", " : "") + getCoor() + ", " + attr + ')';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
index 3ed35ba..d885c09 100644
--- a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
@@ -47,7 +47,7 @@ public class CachedAttributionBingAerialTileSource extends BingAerialTileSource
 
     class BingAttributionData extends CacheCustomContent<IOException> {
 
-        public BingAttributionData() {
+        BingAttributionData() {
             super("bing.attribution.xml", CacheCustomContent.INTERVAL_HOURLY);
         }
 
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
index f2e715f..edfa249 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
@@ -163,20 +163,20 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
     /** (original) language of the translated name entry */
     private String langName;
     /** whether this is a entry activated by default or not */
-    private boolean defaultEntry = false;
+    private boolean defaultEntry;
     /** The data part of HTTP cookies header in case the service requires cookies to work */
-    private String cookies = null;
+    private String cookies;
     /** Whether this service requires a explicit EULA acceptance before it can be activated */
-    private String eulaAcceptanceRequired = null;
+    private String eulaAcceptanceRequired;
     /** type of the imagery servics - WMS, TMS, ... */
     private ImageryType imageryType = ImageryType.WMS;
-    private double pixelPerDegree = 0.0;
+    private double pixelPerDegree;
     /** maximum zoom level for TMS imagery */
-    private int defaultMaxZoom = 0;
+    private int defaultMaxZoom;
     /** minimum zoom level for TMS imagery */
-    private int defaultMinZoom = 0;
+    private int defaultMinZoom;
     /** display bounds of imagery, displayed in prefs and used for automatic imagery selection */
-    private ImageryBounds bounds = null;
+    private ImageryBounds bounds;
     /** projections supported by WMS servers */
     private List<String> serverProjections;
     /** description of the imagery entry, should contain notes what type of data it is */
@@ -295,12 +295,12 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
 
         @Override
         public String toString() {
-            String s = "ImageryPreferenceEntry [name=" + name;
+            StringBuilder s = new StringBuilder("ImageryPreferenceEntry [name=").append(name);
             if (id != null) {
-                s += " id=" + id;
+                s.append(" id=").append(id);
             }
-            s += "]";
-            return s;
+            s.append(']');
+            return s.toString();
         }
     }
 
@@ -860,7 +860,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
      */
     public String getExtendedUrl() {
         return imageryType.getTypeString() + (defaultMaxZoom != 0
-            ? "["+(defaultMinZoom != 0 ? defaultMinZoom+"," : "")+defaultMaxZoom+"]" : "") + ":" + url;
+            ? "["+(defaultMinZoom != 0 ? defaultMinZoom+',' : "")+defaultMaxZoom+"]" : "") + ':' + url;
     }
 
     public String getToolbarName() {
@@ -874,7 +874,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
     public String getMenuName() {
         String res = name;
         if (pixelPerDegree != 0) {
-            res += " ("+pixelPerDegree+")";
+            res += " ("+pixelPerDegree+')';
         }
         return res;
     }
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
index fcfb213..b436ab9 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
@@ -237,12 +237,16 @@ public class ImageryLayerInfo {
     }
 
     private boolean isSimilar(ImageryInfo iiA, ImageryInfo iiB) {
+        if (iiA == null)
+            return false;
+        if (!iiA.getImageryType().equals(iiB.getImageryType()))
+            return false;
         if (iiA.getId() != null && iiB.getId() != null) return iiA.getId().equals(iiB.getId());
         return isSimilar(iiA.getUrl(), iiB.getUrl());
     }
 
     // some additional checks to respect extended URLs in preferences (legacy workaround)
-    private boolean isSimilar(String a, String b) {
+    private static boolean isSimilar(String a, String b) {
         return Objects.equals(a, b) || (a != null && b != null && !a.isEmpty() && !b.isEmpty() && (a.contains(b) || b.contains(a)));
     }
 
diff --git a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
index 19c7905..38cedd5 100644
--- a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
+++ b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
@@ -48,11 +48,11 @@ public class OffsetBookmark {
         this.projectionCode = array.get(0);
         this.layerName = array.get(1);
         this.name = array.get(2);
-        this.dx = Double.valueOf(array.get(3));
-        this.dy = Double.valueOf(array.get(4));
+        this.dx = Double.parseDouble(array.get(3));
+        this.dy = Double.parseDouble(array.get(4));
         if (array.size() >= 7) {
-            this.centerX = Double.valueOf(array.get(5));
-            this.centerY = Double.valueOf(array.get(6));
+            this.centerX = Double.parseDouble(array.get(5));
+            this.centerY = Double.parseDouble(array.get(6));
         }
         if (projectionCode == null) {
             Main.error(tr("Projection ''{0}'' is not found, bookmark ''{1}'' is not usable", projectionCode, name));
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
index 61d036d..e9b8c91 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
@@ -104,7 +104,7 @@ public class TMSCachedTileLoader implements TileLoader, CachedTileLoader, TileCa
 
     @Override
     public void clearCache(TileSource source) {
-        this.cache.remove(source.getName() + ":");
+        this.cache.remove(source.getName() + ':');
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
index 75e05ed..2ce0292 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
@@ -90,7 +90,7 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
             if (tsName == null) {
                 tsName = "";
             }
-            return tsName.replace(":", "_") + ":" + tileSource.getTileId(tile.getZoom(), tile.getXtile(), tile.getYtile());
+            return tsName.replace(':', '_') + ':' + tileSource.getTileId(tile.getZoom(), tile.getXtile(), tile.getYtile());
         }
         return null;
     }
@@ -165,7 +165,6 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
         boolean status = result.equals(LoadResult.SUCCESS);
 
         try {
-            if (!tile.isLoaded()) { //if someone else already loaded tile, skip all the handling
                 tile.finishLoading(); // whatever happened set that loading has finished
                 // set tile metadata
                 if (this.attributes != null) {
@@ -177,16 +176,6 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                 switch(result) {
                 case SUCCESS:
                     handleNoTileAtZoom();
-                    if (object != null) {
-                        byte[] content = object.getContent();
-                        if (content != null && content.length > 0) {
-                            tile.loadImage(new ByteArrayInputStream(content));
-                            if (tile.getImage() == null) {
-                                tile.setError(tr("Could not load image from tile server"));
-                                status = false;
-                            }
-                        }
-                    }
                     int httpStatusCode = attributes.getResponseCode();
                     if (!isNoTileAtZoom() && httpStatusCode >= 400) {
                         if (attributes.getErrorMessage() == null) {
@@ -196,16 +185,16 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                         }
                         status = false;
                     }
+                    status &= tryLoadTileImage(object); //try to keep returned image as background
                     break;
                 case FAILURE:
                     tile.setError("Problem loading tile");
-                    // no break intentional here
+                    tryLoadTileImage(object);
                     break;
                 case CANCELED:
                     tile.loadingCanceled();
                     // do nothing
                 }
-            }
 
             // always check, if there is some listener interested in fact, that tile has finished loading
             if (listeners != null) { // listeners might be null, if some other thread notified already about success
@@ -326,5 +315,17 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
         return attributes != null && attributes.isNoTileAtZoom();
     }
 
-
+    private boolean tryLoadTileImage(CacheEntry object) throws IOException {
+        if (object != null) {
+            byte[] content = object.getContent();
+            if (content != null && content.length > 0) {
+                tile.loadImage(new ByteArrayInputStream(content));
+                if (tile.getImage() == null) {
+                    tile.setError(tr("Could not load image from tile server"));
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java b/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java
index dd6c37c..aa66b39 100644
--- a/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSource.java
@@ -210,7 +210,7 @@ public class TemplatedWMSTileSource extends TMSTileSource implements TemplatedTi
                 replacement = String.valueOf(getTileSize());
                 break;
             default:
-                replacement = "{" + matcher.group(1) + "}";
+                replacement = '{' + matcher.group(1) + '}';
             }
             matcher.appendReplacement(url, replacement);
         }
diff --git a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
index 43e7f31..be0c823 100644
--- a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
@@ -132,7 +132,7 @@ public class WMTSTileSource extends TMSTileSource implements TemplatedTileSource
         private final Layer[] layers;
         private final JTable list;
 
-        public SelectLayerDialog(Collection<Layer> layers) {
+        SelectLayerDialog(Collection<Layer> layers) {
             super(Main.parent, tr("Select WMTS layer"), new String[]{tr("Add layers"), tr("Cancel")});
             this.layers = layers.toArray(new Layer[]{});
             //getLayersTable(layers, Main.getProjection())
@@ -214,8 +214,6 @@ public class WMTSTileSource extends TMSTileSource implements TemplatedTileSource
         this.layers = getCapabilities();
         if (this.layers.isEmpty())
             throw new IllegalArgumentException(tr("No layers defined by getCapabilities document: {0}", info.getUrl()));
-
-        // Not needed ? initProjection();
     }
 
     private Layer userSelectLayer(Collection<Layer> layers) {
@@ -386,13 +384,6 @@ public class WMTSTileSource extends TMSTileSource implements TemplatedTileSource
     }
 
     /**
-     * Initializes projection for this TileSource with current projection
-     */
-    protected void initProjection() {
-        initProjection(Main.getProjection());
-    }
-
-    /**
      * Initializes projection for this TileSource with projection
      * @param proj projection to be used by this TileSource
      */
diff --git a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
index c20afc1..ec8f942 100644
--- a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
@@ -93,19 +93,19 @@ public abstract class AbstractPrimitive implements IPrimitive {
      * An id of 0 means an unknown id. The object has not been uploaded yet to
      * know what id it will get.
      */
-    protected long id = 0;
+    protected long id;
 
     /**
      * User that last modified this primitive, as specified by the server.
      * Never changed by JOSM.
      */
-    protected User user = null;
+    protected User user;
 
     /**
      * Contains the version number as returned by the API. Needed to
      * ensure update consistency
      */
-    protected int version = 0;
+    protected int version;
 
     /**
      * The id of the changeset this primitive was last uploaded to.
diff --git a/src/org/openstreetmap/josm/data/osm/Changeset.java b/src/org/openstreetmap/josm/data/osm/Changeset.java
index e16b65a..5abc6d4 100644
--- a/src/org/openstreetmap/josm/data/osm/Changeset.java
+++ b/src/org/openstreetmap/josm/data/osm/Changeset.java
@@ -45,9 +45,9 @@ public final class Changeset implements Tagged {
     /** indicates whether this changeset is incomplete. For an incomplete changeset we only know its id */
     private boolean incomplete;
     /** the changeset content */
-    private ChangesetDataSet content = null;
+    private ChangesetDataSet content;
     /** the changeset discussion */
-    private List<ChangesetDiscussionComment> discussion = null;
+    private List<ChangesetDiscussionComment> discussion;
 
     /**
      * Creates a new changeset with id 0.
diff --git a/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java b/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java
index 1885f1d..fd1f0c6 100644
--- a/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java
@@ -16,7 +16,7 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  */
 public class ChangesetDataSet {
 
-    public static enum ChangesetModificationType {
+    public enum ChangesetModificationType {
         CREATED,
         UPDATED,
         DELETED
@@ -155,7 +155,7 @@ public class ChangesetDataSet {
         private ChangesetModificationType modificationType;
         private HistoryOsmPrimitive primitive;
 
-        public DefaultChangesetDataSetEntry(ChangesetModificationType modificationType, HistoryOsmPrimitive primitive) {
+        DefaultChangesetDataSetEntry(ChangesetModificationType modificationType, HistoryOsmPrimitive primitive) {
             this.modificationType = modificationType;
             this.primitive = primitive;
         }
@@ -174,7 +174,7 @@ public class ChangesetDataSet {
     private class DefaultIterator implements Iterator<ChangesetDataSetEntry> {
         private Iterator<Entry<PrimitiveId, ChangesetModificationType>> typeIterator;
 
-        public DefaultIterator() {
+        DefaultIterator() {
             typeIterator = modificationTypes.entrySet().iterator();
         }
 
diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index 76556df..c0ae97f 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -120,7 +120,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
 
     private int highlightUpdateCount;
 
-    private boolean uploadDiscouraged = false;
+    private boolean uploadDiscouraged;
 
     private final ReadWriteLock lock = new ReentrantReadWriteLock();
     private final Object selectionLock = new Object();
@@ -968,7 +968,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
         return result;
     }
 
-    private void deleteWay(Way way) {
+    private static void deleteWay(Way way) {
         way.setNodes(null);
         way.setDeleted(true);
     }
@@ -1098,7 +1098,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
         }
     }
 
-    private void reindexRelation(Relation relation) {
+    private static void reindexRelation(Relation relation) {
         BBox before = relation.getBBox();
         relation.updatePosition();
         if (!before.equals(relation.getBBox())) {
@@ -1223,7 +1223,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
         fireEvent(new ChangesetIdChangedEvent(this, Collections.singletonList(primitive), oldChangesetId, newChangesetId));
     }
 
-    void fireHighlightingChanged(OsmPrimitive primitive) {
+    void fireHighlightingChanged() {
         highlightUpdateCount++;
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/DataSetMerger.java b/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
index 5503dd6..f958cf1 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
@@ -217,7 +217,7 @@ public class DataSetMerger {
         }
     }
 
-    private void resetPrimitive(OsmPrimitive osm) {
+    private static void resetPrimitive(OsmPrimitive osm) {
         if (osm instanceof Way) {
             ((Way) osm).setNodes(null);
         } else if (osm instanceof Relation) {
diff --git a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
index 48f1cc5..d52e529 100644
--- a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
+++ b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
@@ -36,7 +36,7 @@ public class DatasetConsistencyTest {
     private void printError(String type, String message, Object... args) {
         errorCount++;
         if (errorCount <= MAX_ERRORS) {
-            writer.println("[" + type + "] " + String.format(message, args));
+            writer.println('[' + type + "] " + String.format(message, args));
         }
     }
 
@@ -186,7 +186,7 @@ public class DatasetConsistencyTest {
     private void printElapsedTime(long startTime) {
         if (Main.isDebugEnabled()) {
             StackTraceElement item = Thread.currentThread().getStackTrace()[2];
-            String operation = getClass().getSimpleName() + "." + item.getMethodName();
+            String operation = getClass().getSimpleName() + '.' + item.getMethodName();
             long elapsedTime = System.currentTimeMillis() - startTime;
             Main.debug(tr("Test ''{0}'' completed in {1}",
                     operation, Utils.getDurationString(elapsedTime)));
diff --git a/src/org/openstreetmap/josm/data/osm/Filter.java b/src/org/openstreetmap/josm/data/osm/Filter.java
index 81a3e0f..4150480 100644
--- a/src/org/openstreetmap/josm/data/osm/Filter.java
+++ b/src/org/openstreetmap/josm/data/osm/Filter.java
@@ -14,23 +14,20 @@ public class Filter extends SearchSetting {
     private static final String version = "1";
 
     public boolean enable = true;
-    public boolean hiding = false;
-    public boolean inverted = false;
+    public boolean hiding;
+    public boolean inverted;
 
     /**
      * Constructs a new {@code Filter}.
      */
     public Filter() {
-        super("", SearchMode.add, false, false, false);
-    }
-
-    public Filter(String text, SearchMode mode, boolean caseSensitive,
-            boolean regexSearch, boolean allElements) {
-        super(text, mode, caseSensitive, regexSearch, allElements);
+        super();
+        mode = SearchMode.add;
     }
 
     public Filter(FilterPreferenceEntry e) {
-        super(e.text, SearchMode.add, false, false, false);
+        this();
+        text = e.text;
         if ("replace".equals(e.mode)) {
             mode = SearchMode.replace;
         } else if ("add".equals(e.mode)) {
@@ -42,6 +39,7 @@ public class Filter extends SearchSetting {
         }
         caseSensitive = e.case_sensitive;
         regexSearch = e.regex_search;
+        mapCSSSearch = e.mapCSS_search;
         enable = e.enable;
         hiding = e.hiding;
         inverted = e.inverted;
@@ -49,13 +47,14 @@ public class Filter extends SearchSetting {
 
     public static class FilterPreferenceEntry {
         @pref @writeExplicitly public String version = "1";
-        @pref public String text = null;
+        @pref public String text;
         @pref @writeExplicitly public String mode = "add";
-        @pref public boolean case_sensitive = false;
-        @pref public boolean regex_search = false;
+        @pref public boolean case_sensitive;
+        @pref public boolean regex_search;
+        @pref public boolean mapCSS_search;
         @pref @writeExplicitly public boolean enable = true;
-        @pref @writeExplicitly public boolean hiding = false;
-        @pref @writeExplicitly public boolean inverted = false;
+        @pref @writeExplicitly public boolean hiding;
+        @pref @writeExplicitly public boolean inverted;
     }
 
     public FilterPreferenceEntry getPreferenceEntry() {
@@ -65,6 +64,7 @@ public class Filter extends SearchSetting {
         e.mode = mode.toString();
         e.case_sensitive = caseSensitive;
         e.regex_search = regexSearch;
+        e.mapCSS_search = mapCSSSearch;
         e.enable = enable;
         e.hiding = hiding;
         e.inverted = inverted;
diff --git a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
index 1bf8e6e..fcc52a6 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
@@ -83,7 +83,7 @@ public class FilterMatcher {
                 isDelete = false;
             }
 
-            Match compiled = SearchCompiler.compile(filter.text, filter.caseSensitive, filter.regexSearch);
+            Match compiled = SearchCompiler.compile(filter);
             this.match = filter.inverted ? new Not(compiled) : compiled;
             this.isInverted = filter.inverted;
         }
@@ -135,7 +135,7 @@ public class FilterMatcher {
      * @return when hidden is true, returns whether the primitive is hidden
      * when hidden is false, returns whether the primitive is disabled or hidden
      */
-    private boolean isFiltered(OsmPrimitive primitive, boolean hidden) {
+    private static boolean isFiltered(OsmPrimitive primitive, boolean hidden) {
         return hidden ? primitive.isDisabledAndHidden() : primitive.isDisabled();
     }
 
@@ -146,7 +146,7 @@ public class FilterMatcher {
      * @param hidden the level where the check is performed
      * @return true, if at least one non-inverted filter applies to the primitive
      */
-    private boolean isFilterExplicit(OsmPrimitive primitive, boolean hidden) {
+    private static boolean isFilterExplicit(OsmPrimitive primitive, boolean hidden) {
         return hidden ? primitive.getHiddenType() : primitive.getDisabledType();
     }
 
@@ -161,7 +161,7 @@ public class FilterMatcher {
      * parameter <code>hidden</code> and
      * (c) at least one of the parent ways is explicitly filtered
      */
-    private boolean allParentWaysFiltered(OsmPrimitive primitive, boolean hidden) {
+    private static boolean allParentWaysFiltered(OsmPrimitive primitive, boolean hidden) {
         List<OsmPrimitive> refs = primitive.getReferrers();
         boolean isExplicit = false;
         for (OsmPrimitive p: refs) {
@@ -174,7 +174,7 @@ public class FilterMatcher {
         return isExplicit;
     }
 
-    private boolean oneParentWayNotFiltered(OsmPrimitive primitive, boolean hidden) {
+    private static boolean oneParentWayNotFiltered(OsmPrimitive primitive, boolean hidden) {
         List<OsmPrimitive> refs = primitive.getReferrers();
         for (OsmPrimitive p: refs) {
             if (p instanceof Way && !isFiltered(p, hidden))
@@ -184,7 +184,7 @@ public class FilterMatcher {
         return false;
     }
 
-    private boolean allParentMultipolygonsFiltered(OsmPrimitive primitive, boolean hidden) {
+    private static boolean allParentMultipolygonsFiltered(OsmPrimitive primitive, boolean hidden) {
         boolean isExplicit = false;
         for (Relation r : new SubclassFilteredCollection<OsmPrimitive, Relation>(
                 primitive.getReferrers(), OsmPrimitive.multipolygonPredicate)) {
@@ -195,7 +195,7 @@ public class FilterMatcher {
         return isExplicit;
     }
 
-    private boolean oneParentMultipolygonNotFiltered(OsmPrimitive primitive, boolean hidden) {
+    private static boolean oneParentMultipolygonNotFiltered(OsmPrimitive primitive, boolean hidden) {
         for (Relation r : new SubclassFilteredCollection<OsmPrimitive, Relation>(
                 primitive.getReferrers(), OsmPrimitive.multipolygonPredicate)) {
             if (!isFiltered(r, hidden))
@@ -204,7 +204,7 @@ public class FilterMatcher {
         return false;
     }
 
-    private FilterType test(List<FilterInfo> filters, OsmPrimitive primitive, boolean hidden) {
+    private static FilterType test(List<FilterInfo> filters, OsmPrimitive primitive, boolean hidden) {
 
         if (primitive.isIncomplete())
             return FilterType.NOT_FILTERED;
diff --git a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
index 678fe8d..298fc06 100644
--- a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
+++ b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
@@ -98,7 +98,7 @@ public class MultipolygonBuilder {
 
         public List<JoinedPolygon> innerWays;
 
-        public PolygonLevel(JoinedPolygon pol, int level) {
+        PolygonLevel(JoinedPolygon pol, int level) {
             this.outerWay = pol;
             this.level = level;
             this.innerWays = new ArrayList<>();
@@ -344,7 +344,7 @@ public class MultipolygonBuilder {
         private final int to;
         private final List<PolygonLevel> output;
 
-        public Worker(List<JoinedPolygon> input, int from, int to, List<PolygonLevel> output) {
+        Worker(List<JoinedPolygon> input, int from, int to, List<PolygonLevel> output) {
             this.input = input;
             this.from = from;
             this.to = to;
diff --git a/src/org/openstreetmap/josm/data/osm/Node.java b/src/org/openstreetmap/josm/data/osm/Node.java
index 964122f..7afd51a 100644
--- a/src/org/openstreetmap/josm/data/osm/Node.java
+++ b/src/org/openstreetmap/josm/data/osm/Node.java
@@ -274,7 +274,7 @@ public final class Node extends OsmPrimitive implements INode {
     @Override
     public String toString() {
         String coorDesc = isLatLonKnown() ? "lat="+lat+",lon="+lon : "";
-        return "{Node id=" + getUniqueId() + " version=" + getVersion() + " " + getFlagsAsString() + " "  + coorDesc+"}";
+        return "{Node id=" + getUniqueId() + " version=" + getVersion() + ' ' + getFlagsAsString() + ' '  + coorDesc+'}';
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/osm/NoteData.java b/src/org/openstreetmap/josm/data/osm/NoteData.java
index ef5274d..26b89a5 100644
--- a/src/org/openstreetmap/josm/data/osm/NoteData.java
+++ b/src/org/openstreetmap/josm/data/osm/NoteData.java
@@ -26,7 +26,7 @@ public class NoteData {
     private long newNoteId = -1;
 
     private final Storage<Note> noteList;
-    private Note selectedNote = null;
+    private Note selectedNote;
     private Comparator<Note> comparator = DEFAULT_COMPARATOR;
 
     /**
@@ -278,7 +278,7 @@ public class NoteData {
         }
     }
 
-    private User getCurrentUser() {
+    private static User getCurrentUser() {
         JosmUserIdentityManager userMgr = JosmUserIdentityManager.getInstance();
         return User.createOsmUser(userMgr.getUserId(), userMgr.getUserName());
     }
diff --git a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
index 3c44301..233485c 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
@@ -290,7 +290,7 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
     /*----------
      * MAPPAINT
      *--------*/
-    public StyleCache mappaintStyle = null;
+    public StyleCache mappaintStyle;
     public int mappaintCacheIdx;
 
     /* This should not be called from outside. Fixing the UI to add relevant
@@ -639,7 +639,7 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
         if (isHighlighted() != highlighted) {
             updateFlags(FLAG_HIGHLIGHTED, highlighted);
             if (dataSet != null) {
-                dataSet.fireHighlightingChanged(this);
+                dataSet.fireHighlightingChanged();
             }
         }
     }
@@ -652,9 +652,9 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
      * WORK IN PROGRESS, UNINTERESTING AND DIRECTION KEYS
      *--------------------------------------------------*/
 
-    private static volatile Collection<String> workinprogress = null;
-    private static volatile Collection<String> uninteresting = null;
-    private static volatile Collection<String> discardable = null;
+    private static volatile Collection<String> workinprogress;
+    private static volatile Collection<String> uninteresting;
+    private static volatile Collection<String> discardable;
 
     /**
      * Returns a list of "uninteresting" keys that do not make an object
@@ -725,6 +725,7 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
                             "yh:STRUCTURE",
                             "yh:TOTYUMONO",
                             "yh:TYPE",
+                            "yh:WIDTH",
                             "yh:WIDTH_RANK"
                         ));
         }
@@ -776,8 +777,8 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
         return result;
     }
 
-    private static volatile Match directionKeys = null;
-    private static volatile Match reversedDirectionKeys = null;
+    private static volatile Match directionKeys;
+    private static volatile Match reversedDirectionKeys;
 
     /**
      * Contains a list of direction-dependent keys that make an object
@@ -794,23 +795,23 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
                 "(highway=motorway_link & -oneway=no & -oneway=reversible)";
 
         try {
-            reversedDirectionKeys = SearchCompiler.compile(Main.pref.get("tags.reversed_direction", reversedDirectionDefault), false, false);
+            reversedDirectionKeys = SearchCompiler.compile(Main.pref.get("tags.reversed_direction", reversedDirectionDefault));
         } catch (ParseError e) {
             Main.error("Unable to compile pattern for tags.reversed_direction, trying default pattern: " + e.getMessage());
 
             try {
-                reversedDirectionKeys = SearchCompiler.compile(reversedDirectionDefault, false, false);
+                reversedDirectionKeys = SearchCompiler.compile(reversedDirectionDefault);
             } catch (ParseError e2) {
                 throw new AssertionError("Unable to compile default pattern for direction keys: " + e2.getMessage(), e2);
             }
         }
         try {
-            directionKeys = SearchCompiler.compile(Main.pref.get("tags.direction", directionDefault), false, false);
+            directionKeys = SearchCompiler.compile(Main.pref.get("tags.direction", directionDefault));
         } catch (ParseError e) {
             Main.error("Unable to compile pattern for tags.direction, trying default pattern: " + e.getMessage());
 
             try {
-                directionKeys = SearchCompiler.compile(directionDefault, false, false);
+                directionKeys = SearchCompiler.compile(directionDefault);
             } catch (ParseError e2) {
                 throw new AssertionError("Unable to compile default pattern for direction keys: " + e2.getMessage(), e2);
             }
diff --git a/src/org/openstreetmap/josm/data/osm/OsmUtils.java b/src/org/openstreetmap/josm/data/osm/OsmUtils.java
index 6c04ef7..9e7a9dd 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmUtils.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmUtils.java
@@ -72,7 +72,7 @@ public final class OsmUtils {
                 ? new Relation()
                 : null;
         if (p == null) {
-            throw new IllegalArgumentException("Expecting n/node/w/way/r/relation/area, but got '" + x[0] + "'");
+            throw new IllegalArgumentException("Expecting n/node/w/way/r/relation/area, but got '" + x[0] + '\'');
         }
         for (final Map.Entry<String, String> i : TextTagParser.readTagsFromText(x[1]).entrySet()) {
             p.put(i.getKey(), i.getValue());
diff --git a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
index fd1bbb5..b5e32cb 100644
--- a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
+++ b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
@@ -79,13 +79,13 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
 
         @Override
         public String toString() {
-            return super.toString() + "[" + level + "]: " + bbox();
+            return super.toString() + '[' + level + "]: " + bbox();
         }
 
         /**
          * Constructor for root node
          */
-        public QBLevel(final QuadBuckets<T> buckets) {
+        QBLevel(final QuadBuckets<T> buckets) {
             level = 0;
             index = 0;
             quad = 0;
@@ -94,7 +94,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             this.buckets = buckets;
         }
 
-        public QBLevel(QBLevel<T> parent, int parent_index, final QuadBuckets<T> buckets) {
+        QBLevel(QBLevel<T> parent, int parent_index, final QuadBuckets<T> buckets) {
             this.parent = parent;
             this.level = parent.level + 1;
             this.index = parent_index;
@@ -360,7 +360,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
                 return;
 
             if (!canRemove()) {
-                abort("attempt to remove non-empty child: " + this.content + " " + Arrays.toString(this.getChildren()));
+                abort("attempt to remove non-empty child: " + this.content + ' ' + Arrays.toString(this.getChildren()));
             }
 
             if (parent.nw == this) {
@@ -507,7 +507,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             return next;
         }
 
-        public QuadBucketIterator(QuadBuckets<T> qb) {
+        QuadBucketIterator(QuadBuckets<T> qb) {
             if (!qb.root.hasChildren() || qb.root.hasContent()) {
                 currentNode = qb.root;
             } else {
diff --git a/src/org/openstreetmap/josm/data/osm/RelationMemberData.java b/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
index 1784776..7115409 100644
--- a/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
+++ b/src/org/openstreetmap/josm/data/osm/RelationMemberData.java
@@ -35,7 +35,7 @@ public class RelationMemberData implements PrimitiveId {
 
     @Override
     public String toString() {
-        return (memberType != null ? memberType.getAPIName() : "undefined") + " " + memberId;
+        return (memberType != null ? memberType.getAPIName() : "undefined") + ' ' + memberId;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/Storage.java b/src/org/openstreetmap/josm/data/osm/Storage.java
index 2c42aa4..510febc 100644
--- a/src/org/openstreetmap/josm/data/osm/Storage.java
+++ b/src/org/openstreetmap/josm/data/osm/Storage.java
@@ -88,7 +88,7 @@ public class Storage<T> extends AbstractSet<T> {
     private T[] data;
     private int mask;
     private int size;
-    private volatile int modCount = 0;
+    private volatile int modCount;
     private double loadFactor = 0.6d;
     private static final int DEFAULT_CAPACITY = 16;
     private final boolean safeIterator;
@@ -265,8 +265,7 @@ public class Storage<T> extends AbstractSet<T> {
     /**
      * Additional mixing of hash
      */
-    private int rehash(int h) {
-        //return 54435761*h;
+    private static int rehash(int h) {
         return 1103515245*h >> 2;
     }
 
@@ -360,18 +359,6 @@ public class Storage<T> extends AbstractSet<T> {
             }
         };
     }
-    /*
-    public static <O> Hash<O,O> identityHash() {
-        return new Hash<O,O>() {
-            public int getHashCode(O t) {
-                return System.identityHashCode(t);
-            }
-            public boolean equals(O t1, O t2) {
-                return t1 == t2;
-            }
-        };
-    }
-     */
 
     private final class FMap<K> implements Map<K, T> {
         private Hash<K, ? super T> fHash;
@@ -458,7 +445,7 @@ public class Storage<T> extends AbstractSet<T> {
 
     private final class SafeReadonlyIter implements Iterator<T> {
         private final T[] data;
-        private int slot = 0;
+        private int slot;
 
         SafeReadonlyIter(T[] data) {
             this.data = data;
@@ -490,7 +477,7 @@ public class Storage<T> extends AbstractSet<T> {
 
     private final class Iter implements Iterator<T> {
         private final int mods;
-        private int slot = 0;
+        private int slot;
         private int removeSlot = -1;
 
         Iter() {
diff --git a/src/org/openstreetmap/josm/data/osm/Tag.java b/src/org/openstreetmap/josm/data/osm/Tag.java
index 369766c..98d710d 100644
--- a/src/org/openstreetmap/josm/data/osm/Tag.java
+++ b/src/org/openstreetmap/josm/data/osm/Tag.java
@@ -111,13 +111,13 @@ public class Tag {
         if (x.length == 2) {
             return new Tag(x[0], x[1]);
         } else {
-            throw new IllegalArgumentException("'" + s + "' does not contain '='");
+            throw new IllegalArgumentException('\'' + s + "' does not contain '='");
         }
     }
 
     @Override
     public String toString() {
-        return key + "=" + value;
+        return key + '=' + value;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/TigerUtils.java b/src/org/openstreetmap/josm/data/osm/TigerUtils.java
index 56a3b4c..f7c7c98 100644
--- a/src/org/openstreetmap/josm/data/osm/TigerUtils.java
+++ b/src/org/openstreetmap/josm/data/osm/TigerUtils.java
@@ -44,7 +44,7 @@ public final class TigerUtils {
         return name;
     }
 
-    public static String combineTags(String name, Set<String> values) {
+    public static String combineTags(Set<String> values) {
         Set<Object> resultSet = new TreeSet<>();
         for (String value: values) {
             String[] parts = value.split(":");
@@ -65,11 +65,4 @@ public final class TigerUtils {
         }
         return combined.toString();
     }
-
-    public static String combineTags(String name, String t1, String t2) {
-        Set<String> set = new TreeSet<>();
-        set.add(t1);
-        set.add(t2);
-        return TigerUtils.combineTags(name, set);
-    }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/User.java b/src/org/openstreetmap/josm/data/osm/User.java
index ce25fd5..9969839 100644
--- a/src/org/openstreetmap/josm/data/osm/User.java
+++ b/src/org/openstreetmap/josm/data/osm/User.java
@@ -23,7 +23,7 @@ import org.openstreetmap.josm.tools.Utils;
  */
 public final class User {
 
-    private static long uidCounter = 0;
+    private static long uidCounter;
 
     /**
      * the map of known users
@@ -58,7 +58,7 @@ public final class User {
         return user;
     }
 
-    private static User lastUser = null;
+    private static User lastUser;
 
     /**
      * Creates a user known to the OSM server
diff --git a/src/org/openstreetmap/josm/data/osm/Way.java b/src/org/openstreetmap/josm/data/osm/Way.java
index 7ad07b4..88c3d6e 100644
--- a/src/org/openstreetmap/josm/data/osm/Way.java
+++ b/src/org/openstreetmap/josm/data/osm/Way.java
@@ -80,7 +80,7 @@ public final class Way extends OsmPrimitive implements IWay {
     /**
      * Prevent directly following identical nodes in ways.
      */
-    private List<Node> removeDouble(List<Node> nodes) {
+    private static List<Node> removeDouble(List<Node> nodes) {
         Node last = null;
         int count = nodes.size();
         for (int i = 0; i < count && count > 2;) {
@@ -330,7 +330,7 @@ public final class Way extends OsmPrimitive implements IWay {
     @Override
     public String toString() {
         String nodesDesc = isIncomplete() ? "(incomplete)" : "nodes=" + Arrays.toString(nodes);
-        return "{Way id=" + getUniqueId() + " version=" + getVersion()+ " " + getFlagsAsString()  + " " + nodesDesc + "}";
+        return "{Way id=" + getUniqueId() + " version=" + getVersion()+ ' ' + getFlagsAsString() + ' ' + nodesDesc + '}';
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/osm/WaySegment.java b/src/org/openstreetmap/josm/data/osm/WaySegment.java
index fea5779..f28c1d7 100644
--- a/src/org/openstreetmap/josm/data/osm/WaySegment.java
+++ b/src/org/openstreetmap/josm/data/osm/WaySegment.java
@@ -93,6 +93,6 @@ public final class WaySegment implements Comparable<WaySegment> {
 
     @Override
     public String toString() {
-        return "WaySegment [way=" + way.getUniqueId() + ", lowerIndex=" + lowerIndex + "]";
+        return "WaySegment [way=" + way.getUniqueId() + ", lowerIndex=" + lowerIndex + ']';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
index 7a6bc03..6b0b185 100644
--- a/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
@@ -107,7 +107,7 @@ public class DatasetEventManager implements MapView.EditLayerChangeListener, Lis
         private final DataSetListener listener;
         private final boolean consolidate;
 
-        public ListenerInfo(DataSetListener listener, boolean consolidate) {
+        ListenerInfo(DataSetListener listener, boolean consolidate) {
             this.listener = listener;
             this.consolidate = consolidate;
         }
diff --git a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
index 3f65359..04b54a4 100644
--- a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
@@ -28,7 +28,7 @@ public class SelectionEventManager implements SelectionChangedListener {
     private static class ListenerInfo {
         private final SelectionChangedListener listener;
 
-        public ListenerInfo(SelectionChangedListener listener) {
+        ListenerInfo(SelectionChangedListener listener) {
             this.listener = listener;
         }
 
diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
index 7d9ed51..51444fa 100644
--- a/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java
@@ -237,7 +237,7 @@ public abstract class HistoryOsmPrimitive implements Comparable<HistoryOsmPrimit
         String key = "name:" + Locale.getDefault();
         if (get(key) != null)
             return get(key);
-        key = "name:" + Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry();
+        key = "name:" + Locale.getDefault().getLanguage() + '_' + Locale.getDefault().getCountry();
         if (get(key) != null)
             return get(key);
         key = "name:" + Locale.getDefault().getLanguage();
@@ -277,6 +277,6 @@ public abstract class HistoryOsmPrimitive implements Comparable<HistoryOsmPrimit
                 + (timestamp != null ? "timestamp=" + timestamp : "") + ", "
                 + (user != null ? "user=" + user + ", " : "") + "changesetId="
                 + changesetId
-                + "]";
+                + ']';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java b/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
index 232c03f..8cef421 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
@@ -22,7 +22,7 @@ import org.openstreetmap.josm.data.osm.Way;
  */
 public class BoundingXYVisitor extends AbstractVisitor {
 
-    private ProjectionBounds bounds = null;
+    private ProjectionBounds bounds;
 
     @Override
     public void visit(Node n) {
@@ -47,6 +47,10 @@ public class BoundingXYVisitor extends AbstractVisitor {
         }
     }
 
+    /**
+     * Visiting call for bounds.
+     * @param b bounds
+     */
     public void visit(Bounds b) {
         if (b != null) {
             visit(b.getMin());
@@ -54,6 +58,10 @@ public class BoundingXYVisitor extends AbstractVisitor {
         }
     }
 
+    /**
+     * Visiting call for projection bounds.
+     * @param b projection bounds
+     */
     public void visit(ProjectionBounds b) {
         if (b != null) {
             visit(b.getMin());
@@ -61,6 +69,10 @@ public class BoundingXYVisitor extends AbstractVisitor {
         }
     }
 
+    /**
+     * Visiting call for lat/lon.
+     * @param latlon lat/lon
+     */
     public void visit(LatLon latlon) {
         if (latlon != null) {
             if (latlon instanceof CachedLatLon) {
@@ -71,6 +83,10 @@ public class BoundingXYVisitor extends AbstractVisitor {
         }
     }
 
+    /**
+     * Visiting call for east/north.
+     * @param eastNorth east/north
+     */
     public void visit(EastNorth eastNorth) {
         if (eastNorth != null) {
             if (bounds == null) {
@@ -81,6 +97,11 @@ public class BoundingXYVisitor extends AbstractVisitor {
         }
     }
 
+    /**
+     * Determines if the visitor has a non null bounds area.
+     * @return {@code true} if the visitor has a non null bounds area
+     * @see ProjectionBounds#hasExtend
+     */
     public boolean hasExtend() {
         return bounds != null && bounds.hasExtend();
     }
@@ -173,16 +194,20 @@ public class BoundingXYVisitor extends AbstractVisitor {
         if (bounds == null)
             return;
         // convert size from meters to east/north units
-        double en_size = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
-        visit(bounds.getMin().add(-en_size/2, -en_size/2));
-        visit(bounds.getMax().add(+en_size/2, +en_size/2));
+        double enSize = size * Main.map.mapView.getScale() / Main.map.mapView.getDist100Pixel() * 100;
+        visit(bounds.getMin().add(-enSize/2, -enSize/2));
+        visit(bounds.getMax().add(+enSize/2, +enSize/2));
     }
 
     @Override
     public String toString() {
-        return "BoundingXYVisitor["+bounds+"]";
+        return "BoundingXYVisitor["+bounds+']';
     }
 
+    /**
+     * Compute the bounding box of a collection of primitives.
+     * @param primitives the collection of primitives
+     */
     public void computeBoundingBox(Collection<? extends OsmPrimitive> primitives) {
         if (primitives == null) return;
         for (OsmPrimitive p: primitives) {
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/LineClip.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/LineClip.java
index 09e8ed0..2d8a756 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/LineClip.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/LineClip.java
@@ -37,7 +37,7 @@ public class LineClip {
         if (clipBounds == null) {
             return false;
         }
-        return cohenSutherland(p1.x, p1.y, p2.x, p2.y, clipBounds.x , clipBounds.y,
+        return cohenSutherland(p1.x, p1.y, p2.x, p2.y, clipBounds.x, clipBounds.y,
                 clipBounds.x + clipBounds.width, clipBounds.y + clipBounds.height);
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
index 0aa2175..9f3472c 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
@@ -108,7 +108,7 @@ public final class MapRendererFactory {
     }
 
     private final List<Descriptor> descriptors = new ArrayList<>();
-    private Class<? extends AbstractMapRenderer> activeRenderer = null;
+    private Class<? extends AbstractMapRenderer> activeRenderer;
 
     private MapRendererFactory() {
         registerDefaultRenderers();
@@ -257,6 +257,7 @@ public final class MapRendererFactory {
 
     /**
      * <p>Creates an instance of the currently active renderer.</p>
+     * @return an instance of the currently active renderer
      *
      * @throws MapRendererFactoryException if creating an instance fails
      * @see AbstractMapRenderer#AbstractMapRenderer(Graphics2D, NavigatableComponent, boolean)
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java
index fe9973d..293fc96 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java
@@ -34,7 +34,7 @@ public enum PaintColors implements ColorKey {
     private final String name;
     private final Color defaultColor;
 
-    private static volatile Color backgroundColorCache = null;
+    private static volatile Color backgroundColorCache;
 
     private static final MapPaintSylesUpdateListener styleOverrideListener = new MapPaintSylesUpdateListener() {
 
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
index 46ea1d6..bd5f9a8 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
@@ -102,14 +102,14 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         private final double offset;
         private int idx;
 
-        private Point prev = null;
+        private Point prev;
         /* 'prev0' is a point that has distance 'offset' from 'prev' and the
          * line from 'prev' to 'prev0' is perpendicular to the way segment from
          * 'prev' to the next point.
          */
         private int xPrev0, yPrev0;
 
-        public OffsetIterator(List<Node> nodes, double offset) {
+        OffsetIterator(List<Node> nodes, double offset) {
             this.nodes = nodes;
             this.offset = offset;
             idx = 0;
@@ -192,7 +192,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         private final OsmPrimitive osm;
         private final int flags;
 
-        public StyleRecord(ElemStyle style, OsmPrimitive osm, int flags) {
+        StyleRecord(ElemStyle style, OsmPrimitive osm, int flags) {
             this.style = style;
             this.osm = osm;
             this.flags = flags;
@@ -362,7 +362,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         return buildPolygon(center, radius, sides, 0.0);
     }
 
-    private Polygon buildPolygon(Point center, int radius, int sides, double rotation) {
+    private static Polygon buildPolygon(Point center, int radius, int sides, double rotation) {
         Polygon polygon = new Polygon();
         for (int i = 0; i < sides; i++) {
             double angle = ((2 * Math.PI / sides) * i) - rotation;
@@ -1458,7 +1458,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         highlightStep = Main.pref.getInteger("mappaint.highlight.step", 4);
     }
 
-    private Path2D.Double getPath(Way w) {
+    private static Path2D.Double getPath(Way w) {
         Path2D.Double path = new Path2D.Double();
         boolean initial = true;
         for (Node n : w.getNodes()) {
@@ -1499,7 +1499,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         return showNames;
     }
 
-    private double[] pointAt(double t, Polygon poly, double pathLength) {
+    private static double[] pointAt(double t, Polygon poly, double pathLength) {
         double totalLen = t * pathLength;
         double curLen = 0;
         long dx, dy;
@@ -1562,7 +1562,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
          * @param to last index + 1
          * @param output the list of styles to which styles will be added
          */
-        public ComputeStyleListWorker(final List<? extends OsmPrimitive> input, int from, int to, List<StyleRecord> output) {
+        ComputeStyleListWorker(final List<? extends OsmPrimitive> input, int from, int to, List<StyleRecord> output) {
             this.input = input;
             this.from = from;
             this.to = to;
@@ -1639,7 +1639,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
 
         private final List<StyleRecord> allStyleElems;
 
-        public ConcurrentTasksHelper(List<StyleRecord> allStyleElems) {
+        ConcurrentTasksHelper(List<StyleRecord> allStyleElems) {
             this.allStyleElems = allStyleElems;
         }
 
@@ -1728,7 +1728,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 timeFinished = System.currentTimeMillis();
                 System.err.println("; phase 2 (draw): " + Utils.getDurationString(timeFinished - timePhase1) +
                     "; total: " + Utils.getDurationString(timeFinished - timeStart) +
-                    " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ")");
+                    " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ')');
             }
 
             drawVirtualNodes(data, bbox);
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
index ec5b049..c336034 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/WireframeMapRenderer.java
@@ -5,7 +5,6 @@ import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.Point;
-import java.awt.Polygon;
 import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.Stroke;
@@ -73,7 +72,7 @@ public class WireframeMapRenderer extends AbstractMapRenderer implements Visitor
     protected int taggedNodeSize;
 
     /** Color cache to draw subsequent segments of same color as one <code>Path</code>. */
-    protected Color currentColor = null;
+    protected Color currentColor;
     /** Path store to draw subsequent segments of same color as one <code>Path</code>. */
     protected GeneralPath currentPath = new GeneralPath();
     /**
@@ -276,7 +275,7 @@ public class WireframeMapRenderer extends AbstractMapRenderer implements Visitor
         }
     }
 
-    private boolean isNodeTagged(Node n) {
+    private static boolean isNodeTagged(Node n) {
         return n.isTagged() || n.isAnnotated();
     }
 
@@ -454,22 +453,6 @@ public class WireframeMapRenderer extends AbstractMapRenderer implements Visitor
     }
 
     /**
-     * Checks if a polygon is visible in display.
-     *
-     * @param polygon The polygon to check.
-     * @return <code>true</code> if polygon is visible.
-     */
-    protected boolean isPolygonVisible(Polygon polygon) {
-        Rectangle bounds = polygon.getBounds();
-        if (bounds.width == 0 && bounds.height == 0) return false;
-        if (bounds.x > nc.getWidth()) return false;
-        if (bounds.y > nc.getHeight()) return false;
-        if (bounds.x + bounds.width < 0) return false;
-        if (bounds.y + bounds.height < 0) return false;
-        return true;
-    }
-
-    /**
      * Finally display all segments in currect path.
      */
     protected void displaySegments() {
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
index 6eef2ea..f3337f2 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
@@ -76,7 +76,7 @@ public class Multipolygon {
             innerExactRoles.add("inner");
         }
 
-        private void setNormalized(Collection<String> literals, List<String> target) {
+        private static void setNormalized(Collection<String> literals, List<String> target) {
             target.clear();
             for (String l: literals) {
                 if (l == null) {
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
index 20874d4..9ef1016 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/MultipolygonCache.java
@@ -201,7 +201,7 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
         }
     }
 
-    private void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation, Multipolygon>> maps) {
+    private static void dispatchEvent(AbstractDatasetChangedEvent event, Relation r, Collection<Map<Relation, Multipolygon>> maps) {
         for (Map<Relation, Multipolygon> map : maps) {
             Multipolygon m = map.get(r);
             if (m != null) {
@@ -216,7 +216,7 @@ public final class MultipolygonCache implements DataSetListener, LayerChangeList
         }
     }
 
-    private void removeMultipolygonFrom(Relation r, Collection<Map<Relation, Multipolygon>> maps) {
+    private static void removeMultipolygonFrom(Relation r, Collection<Map<Relation, Multipolygon>> maps) {
         for (Map<Relation, Multipolygon> map : maps) {
             map.remove(r);
         }
diff --git a/src/org/openstreetmap/josm/data/projection/AbstractProjection.java b/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
index ef1e217..d91e82e 100644
--- a/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
@@ -25,10 +25,10 @@ public abstract class AbstractProjection implements Projection {
     protected Ellipsoid ellps;
     protected Datum datum;
     protected Proj proj;
-    protected double x0 = 0.0;     /* false easting (in meters) */
-    protected double y0 = 0.0;     /* false northing (in meters) */
-    protected double lon0 = 0.0;   /* central meridian */
-    protected double k0 = 1.0;     /* general scale factor */
+    protected double x0;       /* false easting (in meters) */
+    protected double y0;       /* false northing (in meters) */
+    protected double lon0;     /* central meridian */
+    protected double k0 = 1.0; /* general scale factor */
 
     public final Ellipsoid getEllipsoid() {
         return ellps;
diff --git a/src/org/openstreetmap/josm/data/projection/CustomProjection.java b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
index 3aa378f..4aae50a 100644
--- a/src/org/openstreetmap/josm/data/projection/CustomProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
@@ -55,7 +55,7 @@ public class CustomProjection extends AbstractProjection {
      * Proj4-like projection parameters. See <a href="https://trac.osgeo.org/proj/wiki/GenParms">reference</a>.
      * @since 7370 (public)
      */
-    public static enum Param {
+    public enum Param {
 
         /** False easting */
         x_0("x_0", true),
@@ -198,7 +198,7 @@ public class CustomProjection extends AbstractProjection {
                 if (zoneStr == null)
                     throw new ProjectionConfigurationException(tr("UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."));
                 try {
-                    zone = Integer.parseInt(zoneStr);
+                    zone = Integer.valueOf(zoneStr);
                 } catch (NumberFormatException e) {
                     zone = null;
                 }
diff --git a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
index 1f51a5d..f32fa1a 100644
--- a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
+++ b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
@@ -180,7 +180,7 @@ public final class Ellipsoid {
 
     @Override
     public String toString() {
-        return "Ellipsoid{a="+a+", b="+b+"}";
+        return "Ellipsoid{a="+a+", b="+b+'}';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java b/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java
index 1b48c6a..0def3ea 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/CentricDatum.java
@@ -26,6 +26,6 @@ public class CentricDatum extends AbstractDatum {
 
     @Override
     public String toString() {
-        return "CentricDatum{ellipsoid="+ellps+"}";
+        return "CentricDatum{ellipsoid="+ellps+'}';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
index 4905db6..ada4fa9 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
@@ -82,7 +82,7 @@ public class NTV2GridShiftFile implements Serializable {
     private NTV2SubGrid[] topLevelSubGrid;
     private NTV2SubGrid lastSubGrid;
 
-    private void readBytes(InputStream in, byte[] b) throws IOException {
+    private static void readBytes(InputStream in, byte[] b) throws IOException {
         if (in.read(b) < b.length) {
             Main.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
         }
@@ -166,7 +166,7 @@ public class NTV2GridShiftFile implements Serializable {
      * @param subGrid an array of all Sub Grids
      * @return an array of top level Sub Grids with lower level Sub Grids set.
      */
-    private NTV2SubGrid[] createSubGridTree(NTV2SubGrid[] subGrid) {
+    private static NTV2SubGrid[] createSubGridTree(NTV2SubGrid[] subGrid) {
         int topLevelCount = 0;
         Map<String, List<NTV2SubGrid>> subGridMap = new HashMap<>();
         for (int i = 0; i < subGrid.length; i++) {
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
index 70606b7..d748b06 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFileWrapper.java
@@ -33,7 +33,7 @@ public class NTV2GridShiftFileWrapper {
 
     // CHECKSTYLE.ON: LineLength
 
-    private NTV2GridShiftFile instance = null;
+    private NTV2GridShiftFile instance;
     private String gridFileName;
 
     /**
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
index daa14b4..ceafade 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
@@ -148,7 +148,7 @@ public class NTV2SubGrid implements Cloneable, Serializable {
         }
     }
 
-    private void readBytes(InputStream in, byte[] b) throws IOException {
+    private static void readBytes(InputStream in, byte[] b) throws IOException {
         if (in.read(b) < b.length) {
             Main.error("Failed to read expected amount of bytes ("+ b.length +") from stream");
         }
@@ -208,7 +208,7 @@ public class NTV2SubGrid implements Cloneable, Serializable {
      * @param y Latitude factor
      * @return interpolated value
      */
-    private double interpolate(float a, float b, float c, float d, double x, double y) {
+    private static double interpolate(float a, float b, float c, float d, double x, double y) {
         return a + (((double) b - (double) a) * x) + (((double) c - (double) a) * y) +
         (((double) a + (double) d - b - c) * x * y);
     }
diff --git a/src/org/openstreetmap/josm/data/validation/OsmValidator.java b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
index 4049796..2c66c9e 100644
--- a/src/org/openstreetmap/josm/data/validation/OsmValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
@@ -72,7 +72,7 @@ import org.openstreetmap.josm.tools.Utils;
  */
 public class OsmValidator implements LayerChangeListener {
 
-    public static volatile ValidatorLayer errorLayer = null;
+    public static volatile ValidatorLayer errorLayer;
 
     /** The validate action */
     public ValidateAction validateAction = new ValidateAction();
@@ -80,7 +80,7 @@ public class OsmValidator implements LayerChangeListener {
     /** Grid detail, multiplier of east,north values for valuable cell sizing */
     public static double griddetail;
 
-    public static final Collection<String> ignoredErrors = new TreeSet<>();
+    private static final Collection<String> ignoredErrors = new TreeSet<>();
 
     /**
      * All available tests
@@ -161,7 +161,7 @@ public class OsmValidator implements LayerChangeListener {
     /**
      * Check if plugin directory exists (store ignored errors file)
      */
-    private void checkValidatorDir() {
+    private static void checkValidatorDir() {
         try {
             File pathDir = new File(getValidatorDir());
             if (!pathDir.exists()) {
@@ -172,7 +172,7 @@ public class OsmValidator implements LayerChangeListener {
         }
     }
 
-    private void loadIgnoredErrors() {
+    private static void loadIgnoredErrors() {
         ignoredErrors.clear();
         if (Main.pref.getBoolean(ValidatorPreference.PREF_USE_IGNORE, true)) {
             Path path = Paths.get(getValidatorDir()).resolve("ignorederrors");
@@ -296,7 +296,7 @@ public class OsmValidator implements LayerChangeListener {
         }
     }
 
-    private static boolean testsInitialized = false;
+    private static boolean testsInitialized;
 
     /**
      * Initializes all tests if this operations hasn't been performed already.
diff --git a/src/org/openstreetmap/josm/data/validation/Test.java b/src/org/openstreetmap/josm/data/validation/Test.java
index 64dc6ef..178f86c 100644
--- a/src/org/openstreetmap/josm/data/validation/Test.java
+++ b/src/org/openstreetmap/josm/data/validation/Test.java
@@ -199,6 +199,9 @@ public class Test extends AbstractVisitor {
             progressMonitor.setTicksCount(selection.size());
         }
         for (OsmPrimitive p : selection) {
+            if (isCanceled()) {
+                break;
+            }
             if (isPrimitiveUsable(p)) {
                 p.accept(this);
             }
diff --git a/src/org/openstreetmap/josm/data/validation/TestError.java b/src/org/openstreetmap/josm/data/validation/TestError.java
index 498abff..503a840 100644
--- a/src/org/openstreetmap/josm/data/validation/TestError.java
+++ b/src/org/openstreetmap/josm/data/validation/TestError.java
@@ -32,7 +32,7 @@ import org.openstreetmap.josm.tools.AlphanumComparator;
  */
 public class TestError implements Comparable<TestError>, DataSetListener {
     /** is this error on the ignore list */
-    private boolean ignored = false;
+    private boolean ignored;
     /** Severity */
     private Severity severity;
     /** The error message */
@@ -214,7 +214,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
     }
 
     /**
-     * Sets the ignore state for this error
+     * Returns the ignore state for this error.
+     * @return the ignore state for this error
      */
     public String getIgnoreState() {
         Collection<String> strings = new TreeSet<>();
@@ -231,7 +232,7 @@ public class TestError implements Comparable<TestError>, DataSetListener {
             } else if (o instanceof Node) {
                 type = "n";
             }
-            strings.add(type + "_" + o.getId());
+            strings.add(type + '_' + o.getId());
         }
         for (String o : strings) {
             ignorestring.append(':').append(o);
@@ -242,7 +243,7 @@ public class TestError implements Comparable<TestError>, DataSetListener {
     public String getIgnoreSubGroup() {
         String ignorestring = getIgnoreGroup();
         if (descriptionEn != null) {
-            ignorestring += "_" + descriptionEn;
+            ignorestring += '_' + descriptionEn;
         }
         return ignorestring;
     }
@@ -380,6 +381,6 @@ public class TestError implements Comparable<TestError>, DataSetListener {
 
     @Override
     public String toString() {
-        return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + "]";
+        return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + ']';
     }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
index f0bd540..11614fa 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
@@ -217,7 +217,7 @@ public final class DomainValidator extends AbstractValidator {
         return Arrays.binarySearch(LOCAL_TLDS, chompLeadingDot(iTld.toLowerCase(Locale.ENGLISH))) >= 0;
     }
 
-    private String chompLeadingDot(String str) {
+    private static String chompLeadingDot(String str) {
         if (str.startsWith(".")) {
             return str.substring(1);
         } else {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Coastlines.java b/src/org/openstreetmap/josm/data/validation/tests/Coastlines.java
index 88674e4..6434ffd 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Coastlines.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Coastlines.java
@@ -37,7 +37,7 @@ public class Coastlines extends Test {
 
     private List<Way> coastlines;
 
-    private Area downloadedArea = null;
+    private Area downloadedArea;
 
     /**
      * Constructor
diff --git a/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java b/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
index 35b6bd1..3509f3c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
@@ -98,6 +98,9 @@ public class DuplicateNode extends Test {
     protected static final int DUPLICATE_NODE_RAILWAY = 16;
     protected static final int DUPLICATE_NODE_WATERWAY = 17;
 
+    private static final String[] TYPES = {
+            "none", "highway", "railway", "waterway", "boundary", "power", "natural", "landuse", "building"};
+
     /** The map of potential duplicates.
      *
      * If there is exactly one node for a given pos, the map includes a pair <pos, Node>.
@@ -167,15 +170,14 @@ public class DuplicateNode extends Test {
         }
 
         Map<String, Boolean> typeMap = new HashMap<>();
-        String[] types = {"none", "highway", "railway", "waterway", "boundary", "power", "natural", "landuse", "building"};
 
         // check whether we have multiple nodes at the same position with the same tag set
         for (Iterator<Map<String, String>> it = mm.keySet().iterator(); it.hasNext();) {
             Map<String, String> tagSet = it.next();
             if (mm.get(tagSet).size() > 1) {
 
-                for (String type: types) {
-                    typeMap.put(type, false);
+                for (String type: TYPES) {
+                    typeMap.put(type, Boolean.FALSE);
                 }
 
                 for (OsmPrimitive p : mm.get(tagSet)) {
@@ -189,16 +191,15 @@ public class DuplicateNode extends Test {
                                 Map<String, String> keys = w.getKeys();
                                 for (String type: typeMap.keySet()) {
                                     if (keys.containsKey(type)) {
-                                        typeMap.put(type, true);
+                                        typeMap.put(type, Boolean.TRUE);
                                         typed = true;
                                     }
                                 }
                                 if (!typed) {
-                                    typeMap.put("none", true);
+                                    typeMap.put("none", Boolean.TRUE);
                                 }
                             }
                         }
-
                     }
                 }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java b/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
index 4ce148a..ebd806d 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/DuplicateRelation.java
@@ -107,7 +107,7 @@ public class DuplicateRelation extends Test {
         /** Store relation information
          * @param members The list of relation members
          */
-        public RelationMembers(List<RelationMember> members) {
+        RelationMembers(List<RelationMember> members) {
             this.members = new ArrayList<>(members.size());
             for (RelationMember member : members) {
                 this.members.add(new RelMember(member));
@@ -140,7 +140,7 @@ public class DuplicateRelation extends Test {
          * @param members The list of relation members
          * @param keys The set of tags of the relation
          */
-        public RelationPair(List<RelationMember> members, Map<String, String> keys) {
+        RelationPair(List<RelationMember> members, Map<String, String> keys) {
             this.members = new RelationMembers(members);
             this.keys = keys;
         }
@@ -242,15 +242,6 @@ public class DuplicateRelation extends Test {
 
         long idToKeep = 0;
         Relation relationToKeep = relFix.iterator().next();
-        // Only one relation will be kept - the one with lowest positive ID, if such exist
-        // or one "at random" if no such exists. Rest of the relations will be deleted
-        for (Relation w: relFix) {
-            if (!w.isNew() && (idToKeep == 0 || w.getId() < idToKeep)) {
-                idToKeep = w.getId();
-                relationToKeep = w;
-            }
-        }
-
         // Find the relation that is member of one or more relations. (If any)
         Relation relationWithRelations = null;
         List<Relation> relRef = null;
@@ -262,6 +253,12 @@ public class DuplicateRelation extends Test {
                 relationWithRelations = w;
                 relRef = rel;
             }
+            // Only one relation will be kept - the one with lowest positive ID, if such exist
+            // or one "at random" if no such exists. Rest of the relations will be deleted
+            if (!w.isNew() && (idToKeep == 0 || w.getId() < idToKeep)) {
+                idToKeep = w.getId();
+                relationToKeep = w;
+            }
         }
 
         Collection<Command> commands = new LinkedList<>();
diff --git a/src/org/openstreetmap/josm/data/validation/tests/DuplicateWay.java b/src/org/openstreetmap/josm/data/validation/tests/DuplicateWay.java
index 1a03c29..b3a4e6e 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/DuplicateWay.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/DuplicateWay.java
@@ -41,7 +41,7 @@ public class DuplicateWay extends Test {
         private final List<LatLon> coor;
         private final Map<String, String> keys;
 
-        public WayPair(List<LatLon> coor, Map<String, String> keys) {
+        WayPair(List<LatLon> coor, Map<String, String> keys) {
             this.coor = coor;
             this.keys = keys;
         }
@@ -67,7 +67,7 @@ public class DuplicateWay extends Test {
     private static class WayPairNoTags {
         private final List<LatLon> coor;
 
-        public WayPairNoTags(List<LatLon> coor) {
+        WayPairNoTags(List<LatLon> coor) {
             this.coor = coor;
         }
 
@@ -252,15 +252,6 @@ public class DuplicateWay extends Test {
 
         long idToKeep = 0;
         Way wayToKeep = ways.iterator().next();
-        // Only one way will be kept - the one with lowest positive ID, if such exist
-        // or one "at random" if no such exists. Rest of the ways will be deleted
-        for (Way w: ways) {
-            if (!w.isNew() && (idToKeep == 0 || w.getId() < idToKeep)) {
-                idToKeep = w.getId();
-                wayToKeep = w;
-            }
-        }
-
         // Find the way that is member of one or more relations. (If any)
         Way wayWithRelations = null;
         List<Relation> relations = null;
@@ -272,6 +263,12 @@ public class DuplicateWay extends Test {
                 wayWithRelations = w;
                 relations = rel;
             }
+            // Only one way will be kept - the one with lowest positive ID, if such exist
+            // or one "at random" if no such exists. Rest of the ways will be deleted
+            if (!w.isNew() && (idToKeep == 0 || w.getId() < idToKeep)) {
+                idToKeep = w.getId();
+                wayToKeep = w;
+            }
         }
 
         Collection<Command> commands = new LinkedList<>();
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Highways.java b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
index 468c607..d06cc50 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Highways.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
@@ -19,6 +19,7 @@ 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.data.validation.FixableTestError;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
@@ -39,6 +40,8 @@ public class Highways extends Test {
     protected static final int SOURCE_MAXSPEED_CONTEXT_MISMATCH_VS_HIGHWAY = 2706;
     protected static final int SOURCE_WRONG_LINK = 2707;
 
+    protected static final String SOURCE_MAXSPEED = "source:maxspeed";
+
     /**
      * Classified highways in order of importance
      */
@@ -57,12 +60,12 @@ public class Highways extends Test {
 
     private static final Set<String> ISO_COUNTRIES = new HashSet<>(Arrays.asList(Locale.getISOCountries()));
 
-    private boolean leftByPedestrians = false;
-    private boolean leftByCyclists = false;
-    private boolean leftByCars = false;
-    private int pedestrianWays = 0;
-    private int cyclistWays = 0;
-    private int carsWays = 0;
+    private boolean leftByPedestrians;
+    private boolean leftByCyclists;
+    private boolean leftByCars;
+    private int pedestrianWays;
+    private int cyclistWays;
+    private int carsWays;
 
     /**
      * Constructs a new {@code Highways} test.
@@ -91,7 +94,7 @@ public class Highways extends Test {
              && n.isReferredByWays(2)) {
                 testMissingPedestrianCrossing(n);
             }
-            if (n.hasKey("source:maxspeed")) {
+            if (n.hasKey(SOURCE_MAXSPEED)) {
                 // Check maxspeed but not context against highway for nodes
                 // as maxspeed is not set on highways here but on signs, speed cameras, etc.
                 testSourceMaxspeed(n, false);
@@ -106,7 +109,7 @@ public class Highways extends Test {
                     && w.hasKey("junction") && "roundabout".equals(w.get("junction"))) {
                 testWrongRoundabout(w);
             }
-            if (w.hasKey("source:maxspeed")) {
+            if (w.hasKey(SOURCE_MAXSPEED)) {
                 // Check maxspeed, including context against highway
                 testSourceMaxspeed(w, true);
             }
@@ -239,14 +242,20 @@ public class Highways extends Test {
     }
 
     private void testSourceMaxspeed(OsmPrimitive p, boolean testContextHighway) {
-        String value = p.get("source:maxspeed");
+        String value = p.get(SOURCE_MAXSPEED);
         if (value.matches("[A-Z]{2}:.+")) {
             int index = value.indexOf(':');
             // Check country
             String country = value.substring(0, index);
             if (!ISO_COUNTRIES.contains(country)) {
-                errors.add(new TestError(this, Severity.WARNING,
-                        tr("Unknown country code: {0}", country), SOURCE_MAXSPEED_UNKNOWN_COUNTRY_CODE, p));
+                if ("UK".equals(country)) {
+                    errors.add(new FixableTestError(this, Severity.WARNING,
+                            tr("Unknown country code: {0}", country), SOURCE_MAXSPEED_UNKNOWN_COUNTRY_CODE, p,
+                            new ChangePropertyCommand(p, SOURCE_MAXSPEED, value.replace("UK:", "GB:"))));
+                } else {
+                    errors.add(new TestError(this, Severity.WARNING,
+                            tr("Unknown country code: {0}", country), SOURCE_MAXSPEED_UNKNOWN_COUNTRY_CODE, p));
+                }
             }
             // Check context
             String context = value.substring(index+1);
diff --git a/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java b/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
index 48ce8f0..999ee5c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/InternetTags.java
@@ -101,7 +101,7 @@ public class InternetTags extends Test {
                     String domain = !protocol.isEmpty() ? v.substring(protocol.length(), v.length()) : v;
                     String ending = "";
                     if (domain.contains("/")) {
-                        int idx = domain.indexOf("/");
+                        int idx = domain.indexOf('/');
                         ending = domain.substring(idx, domain.length());
                         domain = domain.substring(0, idx);
                     }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
index 1720f20..727ac73 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
@@ -44,7 +44,7 @@ public class Lanes extends Test.TagTest {
 
     protected void checkNumberOfLanesByKey(final OsmPrimitive p, String lanesKey, String message) {
         final Collection<String> keysForPattern = new ArrayList<>(Utils.filter(p.keySet(),
-                Predicates.stringContainsPattern(Pattern.compile(":" + lanesKey + "$"))));
+                Predicates.stringContainsPattern(Pattern.compile(':' + lanesKey + '$'))));
         keysForPattern.removeAll(Arrays.asList(BLACKLIST));
         if (keysForPattern.isEmpty()) {
             // nothing to check
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
index ba7ea45..95ca9f6 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
@@ -125,7 +125,7 @@ public class MapCSSTagChecker extends Test.TagTest {
 
         @Override
         public String toString() {
-            return "GroupedMapCSSRule [selectors=" + selectors + ", declaration=" + declaration + "]";
+            return "GroupedMapCSSRule [selectors=" + selectors + ", declaration=" + declaration + ']';
         }
     }
 
@@ -148,7 +148,10 @@ public class MapCSSTagChecker extends Test.TagTest {
     abstract static class FixCommand {
         /**
          * Creates the fixing {@link Command} for the given primitive. The {@code matchingSelector} is used to evaluate placeholders
-         * (cf. {@link org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.TagCheck#insertArguments(Selector, String, OsmPrimitive)}).
+         * (cf. {@link MapCSSTagChecker.TagCheck#insertArguments(Selector, String, OsmPrimitive)}).
+         * @param p OSM primitive
+         * @param matchingSelector  matching selector
+         * @return fix command
          */
         abstract Command createCommand(final OsmPrimitive p, final Selector matchingSelector);
 
@@ -233,14 +236,35 @@ public class MapCSSTagChecker extends Test.TagTest {
 
     final MultiMap<String, TagCheck> checks = new MultiMap<>();
 
-    static class TagCheck implements Predicate<OsmPrimitive> {
+    /**
+     * Result of {@link TagCheck#readMapCSS}
+     * @since 8936
+     */
+    public static class ParseResult {
+        /** Checks successfully parsed */
+        public final List<TagCheck> parseChecks;
+        /** Errors that occured during parsing */
+        public final Collection<Throwable> parseErrors;
+
+        /**
+         * Constructs a new {@code ParseResult}.
+         * @param parseChecks Checks successfully parsed
+         * @param parseErrors Errors that occured during parsing
+         */
+        public ParseResult(List<TagCheck> parseChecks, Collection<Throwable> parseErrors) {
+            this.parseChecks = parseChecks;
+            this.parseErrors = parseErrors;
+        }
+    }
+
+    public static class TagCheck implements Predicate<OsmPrimitive> {
         protected final GroupedMapCSSRule rule;
         protected final List<FixCommand> fixCommands = new ArrayList<>();
         protected final List<String> alternatives = new ArrayList<>();
         protected final Map<Instruction.AssignmentInstruction, Severity> errors = new HashMap<>();
         protected final Map<String, Boolean> assertions = new HashMap<>();
         protected final Set<String> setClassExpressions = new HashSet<>();
-        protected boolean deletion = false;
+        protected boolean deletion;
 
         TagCheck(GroupedMapCSSRule rule) {
             this.rule = rule;
@@ -300,11 +324,11 @@ public class MapCSSTagChecker extends Test.TagTest {
                     } else if ("suggestAlternative".equals(ai.key) && val != null) {
                         check.alternatives.add(val);
                     } else if ("assertMatch".equals(ai.key) && val != null) {
-                        check.assertions.put(val, true);
+                        check.assertions.put(val, Boolean.TRUE);
                     } else if ("assertNoMatch".equals(ai.key) && val != null) {
-                        check.assertions.put(val, false);
+                        check.assertions.put(val, Boolean.FALSE);
                     } else {
-                        throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + "!");
+                        throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + '!');
                     }
                 }
             }
@@ -319,7 +343,7 @@ public class MapCSSTagChecker extends Test.TagTest {
             return check;
         }
 
-        static List<TagCheck> readMapCSS(Reader css) throws ParseException {
+        static ParseResult readMapCSS(Reader css) throws ParseException {
             CheckParameterUtil.ensureParameterNotNull(css, "css");
 
             final MapCSSStyleSource source = new MapCSSStyleSource("");
@@ -328,7 +352,8 @@ public class MapCSSTagChecker extends Test.TagTest {
             css = new StringReader(preprocessor.pp_root(source));
             final MapCSSParser parser = new MapCSSParser(css, MapCSSParser.LexicalState.DEFAULT);
             parser.sheet(source);
-            assert source.getErrors().isEmpty();
+            Collection<Throwable> parseErrors = source.getErrors();
+            assert parseErrors.isEmpty();
             // Ignore "meta" rule(s) from external rules of JOSM wiki
             removeMetaRules(source);
             // group rules with common declaration block
@@ -342,16 +367,17 @@ public class MapCSSTagChecker extends Test.TagTest {
                     g.get(rule.declaration).add(rule.selector);
                 }
             }
-            List<TagCheck> result = new ArrayList<>();
+            List<TagCheck> parseChecks = new ArrayList<>();
             for (Map.Entry<Declaration, List<Selector>> map : g.entrySet()) {
                 try {
-                    result.add(TagCheck.ofMapCSSRule(
+                    parseChecks.add(TagCheck.ofMapCSSRule(
                             new GroupedMapCSSRule(map.getValue(), map.getKey())));
                 } catch (IllegalDataException e) {
                     Main.error("Cannot add MapCss rule: "+e.getMessage());
+                    parseErrors.add(e);
                 }
             }
-            return result;
+            return new ParseResult(parseChecks, parseErrors);
         }
 
         private static void removeMetaRules(MapCSSStyleSource source) {
@@ -618,7 +644,7 @@ public class MapCSSTagChecker extends Test.TagTest {
 
         @Override
         public String toString() {
-            return "MapCSSTagCheckerAndRule [rule=" + rule + "]";
+            return "MapCSSTagCheckerAndRule [rule=" + rule + ']';
         }
     }
 
@@ -668,25 +694,28 @@ public class MapCSSTagChecker extends Test.TagTest {
     /**
      * Adds a new MapCSS config file from the given URL.
      * @param url The unique URL of the MapCSS config file
+     * @return List of tag checks and parsing errors, or null
      * @throws ParseException if the config file does not match MapCSS syntax
      * @throws IOException if any I/O error occurs
      * @since 7275
      */
-    public synchronized void addMapCSS(String url) throws ParseException, IOException {
+    public synchronized ParseResult addMapCSS(String url) throws ParseException, IOException {
         CheckParameterUtil.ensureParameterNotNull(url, "url");
         CachedFile cache = new CachedFile(url);
         InputStream zip = cache.findZipEntryInputStream("validator.mapcss", "");
+        ParseResult result;
         try (InputStream s = zip != null ? zip : cache.getInputStream()) {
-            List<TagCheck> tagchecks = TagCheck.readMapCSS(new BufferedReader(UTFInputStreamReader.create(s)));
+            result = TagCheck.readMapCSS(new BufferedReader(UTFInputStreamReader.create(s)));
             checks.remove(url);
-            checks.putAll(url, tagchecks);
+            checks.putAll(url, result.parseChecks);
             // Check assertions, useful for development of local files
             if (Main.pref.getBoolean("validator.check_assert_local_rules", false) && Utils.isLocalUrl(url)) {
-                for (String msg : checkAsserts(tagchecks)) {
+                for (String msg : checkAsserts(result.parseChecks)) {
                     Main.warn(msg);
                 }
             }
         }
+        return result;
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
index 557e5ba..0da93af 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
@@ -90,7 +90,7 @@ public class MultipolygonTest extends Test {
         super.endTest();
     }
 
-    private GeneralPath createPath(List<Node> nodes) {
+    private static GeneralPath createPath(List<Node> nodes) {
         GeneralPath result = new GeneralPath();
         result.moveTo((float) nodes.get(0).getCoor().lat(), (float) nodes.get(0).getCoor().lon());
         for (int i = 1; i < nodes.size(); i++) {
@@ -108,7 +108,7 @@ public class MultipolygonTest extends Test {
         return result;
     }
 
-    private Intersection getPolygonIntersection(GeneralPath outer, List<Node> inner) {
+    private static Intersection getPolygonIntersection(GeneralPath outer, List<Node> inner) {
         boolean inside = false;
         boolean outside = false;
 
@@ -291,7 +291,7 @@ public class MultipolygonTest extends Test {
         }
     }
 
-    private void addRelationIfNeeded(TestError error, Relation r) {
+    private static void addRelationIfNeeded(TestError error, Relation r) {
         // Fix #8212 : if the error references only incomplete primitives,
         // add multipolygon in order to let user select something and fix the error
         Collection<? extends OsmPrimitive> primitives = error.getPrimitives();
diff --git a/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java b/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
index e124672..19afd82 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/OpeningHourTest.java
@@ -77,7 +77,7 @@ public class OpeningHourTest extends Test.TagTest {
         }
     }
 
-    static enum CheckMode {
+    enum CheckMode {
         TIME_RANGE(0), POINTS_IN_TIME(1), BOTH(2);
         private final int code;
 
@@ -225,6 +225,9 @@ public class OpeningHourTest extends Test.TagTest {
 
     /**
      * Translates and shortens the error/warning message.
+     * @param key OSM key
+     * @param o error/warnign message
+     * @return translated/shortened error/warnign message
      */
     private String getErrorMessage(String key, Object o) {
         String msg = o.toString().trim()
diff --git a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
index 217d135..7aa40de 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
@@ -36,13 +36,13 @@ public class PowerLines extends Test {
     protected static final int POWER_LINES = 2501;
 
     /** Values for {@code power} key interpreted as power lines */
-    public static final Collection<String> POWER_LINE_TAGS = Arrays.asList("line", "minor_line");
+    protected static final Collection<String> POWER_LINE_TAGS = Arrays.asList("line", "minor_line");
     /** Values for {@code power} key interpreted as power towers */
-    public static final Collection<String> POWER_TOWER_TAGS = Arrays.asList("tower", "pole");
+    protected static final Collection<String> POWER_TOWER_TAGS = Arrays.asList("tower", "pole");
     /** Values for {@code power} key interpreted as power stations */
-    public static final Collection<String> POWER_STATION_TAGS = Arrays.asList("station", "sub_station", "substation", "plant", "generator");
+    protected static final Collection<String> POWER_STATION_TAGS = Arrays.asList("station", "sub_station", "substation", "plant", "generator");
     /** Values for {@code power} key interpreted as allowed power items */
-    public static final Collection<String> POWER_ALLOWED_TAGS = Arrays.asList("switch", "transformer", "busbar", "generator", "switchgear");
+    protected static final Collection<String> POWER_ALLOWED_TAGS = Arrays.asList("switch", "transformer", "busbar", "generator", "switchgear");
 
     private final Map<Way, String> towerPoleTagMap = new HashMap<>();
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
index 4109432..464c294 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
@@ -20,13 +20,13 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItem;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Key;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Role;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Roles;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
-import org.openstreetmap.josm.gui.tagging.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.items.Key;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -87,14 +87,14 @@ public class RelationChecker extends Test {
         private final List<Role> roles;
         private final String name;
 
-        public RolePreset(List<Role> roles, String name) {
+        RolePreset(List<Role> roles, String name) {
             this.roles = roles;
             this.name = name;
         }
     }
 
     private static class RoleInfo {
-        private int total = 0;
+        private int total;
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
index 7f715ea..d4ee80b 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
@@ -239,7 +239,7 @@ public class SimilarNamedWays extends Test {
 
         @Override
         public String toString() {
-            return "replaceAll(" + regExpr + ", " + replacement + ")";
+            return "replaceAll(" + regExpr + ", " + replacement + ')';
         }
     }
 
@@ -303,7 +303,7 @@ public class SimilarNamedWays extends Test {
 
         @Override
         public String toString() {
-            return "synonyms(" + replacement + ", " + Arrays.toString(words) + ")";
+            return "synonyms(" + replacement + ", " + Arrays.toString(words) + ')';
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
index 304a1f9..4d989c7 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
@@ -44,12 +44,12 @@ import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.Entities;
 import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItem;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Check;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.CheckGroup;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.KeyedItem;
-import org.openstreetmap.josm.gui.tagging.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.gui.tagging.presets.items.Check;
+import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
 import org.openstreetmap.josm.gui.widgets.EditableList;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
@@ -96,10 +96,10 @@ public class TagChecker extends TagTest {
     public static final String PREF_CHECK_COMPLEX_BEFORE_UPLOAD = PREF_CHECK_COMPLEX + "BeforeUpload";
     public static final String PREF_CHECK_FIXMES_BEFORE_UPLOAD = PREF_CHECK_FIXMES + "BeforeUpload";
 
-    protected boolean checkKeys = false;
-    protected boolean checkValues = false;
-    protected boolean checkComplex = false;
-    protected boolean checkFixmes = false;
+    protected boolean checkKeys;
+    protected boolean checkValues;
+    protected boolean checkComplex;
+    protected boolean checkFixmes;
 
     protected JCheckBox prefCheckKeys;
     protected JCheckBox prefCheckValues;
@@ -130,8 +130,6 @@ public class TagChecker extends TagTest {
 
     protected EditableList sourcesList;
 
-    protected static final Entities entities = new Entities();
-
     private static final List<String> DEFAULT_SOURCES = Arrays.asList(/*DATA_FILE, */IGNORE_FILE, SPELL_FILE);
 
     /**
@@ -163,7 +161,7 @@ public class TagChecker extends TagTest {
         ignoreDataKeyPair.clear();
         harmonizedKeys.clear();
 
-        String errorSources = "";
+        StringBuilder errorSources = new StringBuilder();
         for (String source : Main.pref.getCollection(PREF_SOURCES, DEFAULT_SOURCES)) {
             try (
                 InputStream s = new CachedFile(source).getInputStream();
@@ -240,11 +238,11 @@ public class TagChecker extends TagTest {
                     }
                 }
             } catch (IOException e) {
-                errorSources += source + "\n";
+                errorSources.append(source).append('\n');
             }
         }
 
-        if (!errorSources.isEmpty())
+        if (errorSources.length() > 0)
             throw new IOException(tr("Could not access data file(s):\n{0}", errorSources));
     }
 
@@ -264,9 +262,6 @@ public class TagChecker extends TagTest {
                 presetsValueData.putVoid(a);
             }
             // TODO directionKeys are no longer in OsmPrimitive (search pattern is used instead)
-            /*  for (String a : OsmPrimitive.getDirectionKeys())
-                presetsValueData.add(a);
-             */
             for (String a : Main.pref.getCollection(ValidatorPreference.PREFIX + ".knownkeys",
                     Arrays.asList(new String[]{"is_in", "int_ref", "fixme", "population"}))) {
                 presetsValueData.putVoid(a);
@@ -300,8 +295,9 @@ public class TagChecker extends TagTest {
     /**
      * Checks given string (key or value) if it contains characters with code below 0x20 (either newline or some other special characters)
      * @param s string to check
+     * @return {@code true} if {@code s} contains characters with code below 0x20
      */
-    private boolean containsLow(String s) {
+    private static boolean containsLow(String s) {
         if (s == null)
             return false;
         for (int i = 0; i < s.length(); i++) {
@@ -370,7 +366,7 @@ public class TagChecker extends TagTest {
                         tr(s, key), MessageFormat.format(s, key), INVALID_SPACE, p));
                 withErrors.put(p, "SPACE");
             }
-            if (checkValues && value != null && !value.equals(entities.unescape(value)) && !withErrors.contains(p, "HTML")) {
+            if (checkValues && value != null && !value.equals(Entities.unescape(value)) && !withErrors.contains(p, "HTML")) {
                 errors.add(new TestError(this, Severity.OTHER, tr("Property values contain HTML entity"),
                         tr(s, key), MessageFormat.format(s, key), INVALID_HTML, p));
                 withErrors.put(p, "HTML");
@@ -458,7 +454,7 @@ public class TagChecker extends TagTest {
         }
     }
 
-    private Map<String, String> getPossibleValues(Set<String> values) {
+    private static Map<String, String> getPossibleValues(Set<String> values) {
         // generate a map with common typos
         Map<String, String> map = new HashMap<>();
         if (values != null) {
@@ -619,7 +615,7 @@ public class TagChecker extends TagTest {
                     } else if (key.startsWith(" ") || key.endsWith(" ")) {
                         commands.add(new ChangePropertyKeyCommand(p, key, Tag.removeWhiteSpaces(key)));
                     } else {
-                        String evalue = entities.unescape(value);
+                        String evalue = Entities.unescape(value);
                         if (!evalue.equals(value)) {
                             commands.add(new ChangePropertyCommand(p, key, evalue));
                         }
@@ -666,11 +662,11 @@ public class TagChecker extends TagTest {
             public Object tag;
             public Object value;
             public boolean noMatch;
-            public boolean tagAll = false;
-            public boolean valueAll = false;
-            public boolean valueBool = false;
+            public boolean tagAll;
+            public boolean valueAll;
+            public boolean valueBool;
 
-            private Pattern getPattern(String str) throws PatternSyntaxException {
+            private static Pattern getPattern(String str) throws PatternSyntaxException {
                 if (str.endsWith("/i"))
                     return Pattern.compile(str.substring(1, str.length()-2), Pattern.CASE_INSENSITIVE);
                 if (str.endsWith("/"))
@@ -705,7 +701,7 @@ public class TagChecker extends TagTest {
                 }
             }
 
-            public boolean match(OsmPrimitive osm, Map<String, String> keys) {
+            public boolean match(Map<String, String> keys) {
                 for (Entry<String, String> prop: keys.entrySet()) {
                     String key = prop.getKey();
                     String val = valueBool ? OsmUtils.getNamedOsmBoolean(prop.getValue()) : prop.getValue();
@@ -785,7 +781,7 @@ public class TagChecker extends TagTest {
                 return false;
 
             for (CheckerElement ce : data) {
-                if (!ce.match(osm, keys))
+                if (!ce.match(keys))
                     return false;
             }
             return true;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java b/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
index 4c76a09..d6fcda7 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
@@ -55,7 +55,7 @@ public class UnclosedWays extends Test {
          * @param key The OSM key checked
          * @param engMessage The English message
          */
-        public UnclosedWaysCheck(int code, String key, String engMessage) {
+        UnclosedWaysCheck(int code, String key, String engMessage) {
             this(code, key, engMessage, Collections.<String>emptySet());
         }
 
@@ -66,7 +66,7 @@ public class UnclosedWays extends Test {
          * @param engMessage The English message
          * @param ignoredValues The ignored values.
          */
-        public UnclosedWaysCheck(int code, String key, String engMessage, Set<String> ignoredValues) {
+        UnclosedWaysCheck(int code, String key, String engMessage, Set<String> ignoredValues) {
             this(code, key, engMessage, ignoredValues, true);
         }
 
@@ -78,7 +78,7 @@ public class UnclosedWays extends Test {
          * @param specialValues The special values, to be ignored if ignore is set to true; to be considered only if ignore is set to false
          * @param ignore indicates if special values must be ignored or considered only
          */
-        public UnclosedWaysCheck(int code, String key, String engMessage, Set<String> specialValues, boolean ignore) {
+        UnclosedWaysCheck(int code, String key, String engMessage, Set<String> specialValues, boolean ignore) {
             this.code = code;
             this.key = key;
             this.engMessage = engMessage;
@@ -122,7 +122,7 @@ public class UnclosedWays extends Test {
          * @param key The OSM key checked
          * @param engMessage The English message
          */
-        public UnclosedWaysBooleanCheck(int code, String key, String engMessage) {
+        UnclosedWaysBooleanCheck(int code, String key, String engMessage) {
             super(code, key, engMessage);
         }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
index dd62681..27ef3d2 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
@@ -296,7 +296,7 @@ public abstract class UnconnectedWays extends Test {
         private final Node n1;
         private final Node n2;
 
-        public MyWaySegment(Way w, Node n1, Node n2) {
+        MyWaySegment(Way w, Node n1, Node n2) {
             this.w = w;
             String railway = w.get("railway");
             String highway = w.get("highway");
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java b/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
index 1ebf777..bc5725c 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
@@ -4,9 +4,6 @@ package org.openstreetmap.josm.data.validation.tests;
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.util.Collection;
-import java.util.Map;
-
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.AbstractPrimitive;
 import org.openstreetmap.josm.data.osm.Node;
@@ -40,15 +37,6 @@ public class UntaggedNode extends Test implements AbstractPrimitive.KeyValueVisi
     }
 
     @Override
-    public void visit(Collection<OsmPrimitive> selection) {
-        for (OsmPrimitive p : selection) {
-            if (p.isUsable() && p instanceof Node) {
-                p.accept(this);
-            }
-        }
-    }
-
-    @Override
     public void visit(Node n) {
         if (n.isUsable() && !n.isTagged() && n.getReferrers().isEmpty()) {
 
@@ -97,10 +85,6 @@ public class UntaggedNode extends Test implements AbstractPrimitive.KeyValueVisi
         errors.add(new TestError(this, Severity.WARNING, ERROR_MESSAGE, tr("Other"), "Other", UNTAGGED_NODE_OTHER, (OsmPrimitive) n));
     }
 
-    private boolean contains(Map.Entry<String, String> tag, String s) {
-        return tag.getKey().indexOf(s) != -1 || tag.getValue().indexOf(s) != -1;
-    }
-
     @Override
     public Command fixError(TestError testError) {
         return deletePrimitivesIfNeeded(testError.getPrimitives());
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java b/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
index 3f76218..cd7162d 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
@@ -41,7 +41,7 @@ public class UntaggedWay extends Test {
     private Set<Way> waysUsedInRelations;
 
     /** Ways that must have a name */
-    public static final Set<String> NAMED_WAYS = new HashSet<>();
+    protected static final Set<String> NAMED_WAYS = new HashSet<>();
     static {
         NAMED_WAYS.add("motorway");
         NAMED_WAYS.add("trunk");
@@ -53,7 +53,7 @@ public class UntaggedWay extends Test {
     }
 
     /** Whitelist of roles allowed to reference an untagged way */
-    public static final Set<String> WHITELIST = new HashSet<>();
+    protected static final Set<String> WHITELIST = new HashSet<>();
     static {
         WHITELIST.add("outer");
         WHITELIST.add("inner");
diff --git a/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java b/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
index 0fa70f8..9d2e19b 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
@@ -83,7 +83,7 @@ public class WayConnectedToArea extends Test {
         }
     }
 
-    private boolean isArea(OsmPrimitive p) {
+    private static boolean isArea(OsmPrimitive p) {
         return (p.hasKey("landuse") || p.hasKey("natural"))
                 && ElemStyles.hasAreaElemStyle(p, false);
     }
diff --git a/src/org/openstreetmap/josm/data/validation/util/Entities.java b/src/org/openstreetmap/josm/data/validation/util/Entities.java
index 72d964f..1d1b60d 100644
--- a/src/org/openstreetmap/josm/data/validation/util/Entities.java
+++ b/src/org/openstreetmap/josm/data/validation/util/Entities.java
@@ -30,7 +30,7 @@ import java.util.Map;
  * @see <a href="http://www.w3.org/TR/html401/charset.html#h-5.3">HTML 4.01 Character References</a>
  * @see <a href="http://www.w3.org/TR/html401/charset.html#code-position">HTML 4.01 Code positions</a>
  */
-public class Entities {
+public final class Entities {
     private static final String[][] ARRAY = {
         /* BASIC */
         {"quot", "34"}, // " - double-quote
@@ -333,13 +333,17 @@ public class Entities {
         {"euro", "8364"}, // -- euro sign, U+20AC NEW -->
     };
 
-    private static volatile Map<String, String> mapNameToValue = null;
+    private static volatile Map<String, String> mapNameToValue;
 
-    public String unescape(String str) {
+    private Entities() {
+        // Private constructor for utilities classes
+    }
+
+    public static String unescape(String str) {
         int firstAmp = str.indexOf('&');
         if (firstAmp < 0)
             return str;
-        String res = str.substring(0, firstAmp);
+        StringBuilder res = new StringBuilder(str.substring(0, firstAmp));
         int len = str.length();
         for (int i = firstAmp; i < len; i++) {
             char c = str.charAt(i);
@@ -347,13 +351,13 @@ public class Entities {
                 int nextIdx = i + 1;
                 int semiColonIdx = str.indexOf(';', nextIdx);
                 if (semiColonIdx == -1) {
-                    res += c;
+                    res.append(c);
                     continue;
                 }
                 int amphersandIdx = str.indexOf('&', i + 1);
                 if (amphersandIdx != -1 && amphersandIdx < semiColonIdx) {
                     // Then the text looks like &...&...;
-                    res += c;
+                    res.append(c);
                     continue;
                 }
                 String entityContent = str.substring(nextIdx, semiColonIdx);
@@ -393,15 +397,15 @@ public class Entities {
                 }
 
                 if (entityValue == -1) {
-                    res += '&' + entityContent + ';';
+                    res.append('&').append(entityContent).append(';');
                 } else {
-                    res += (char) entityValue;
+                    res.append((char) entityValue);
                 }
                 i = semiColonIdx; // move index up to the semi-colon
             } else {
-                res += c;
+                res.append(c);
             }
         }
-        return res;
+        return res.toString();
     }
 }
diff --git a/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java b/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
index 36ed5e4..bb891e7 100644
--- a/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
+++ b/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
@@ -62,14 +62,16 @@ public class MultipleNameVisitor extends NameVisitor {
         if (size <= 1) {
             displayName = name;
         } else {
-            displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size);
+            StringBuilder sb = new StringBuilder().append(size).append(' ').append(trn(multipleClassname, multiplePluralClassname, size));
             if (multipleName.length() > 0) {
+                sb.append(": ");
                 if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
-                    displayName += ": " + multipleName;
+                    sb.append(multipleName);
                 } else {
-                    displayName += ": " + multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH) + "...";
+                    sb.append(multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH)).append("...");
                 }
             }
+            displayName = sb.toString();
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/ConditionalOptionPaneUtil.java b/src/org/openstreetmap/josm/gui/ConditionalOptionPaneUtil.java
index be26cfe..58e77cf 100644
--- a/src/org/openstreetmap/josm/gui/ConditionalOptionPaneUtil.java
+++ b/src/org/openstreetmap/josm/gui/ConditionalOptionPaneUtil.java
@@ -73,6 +73,7 @@ public final class ConditionalOptionPaneUtil {
      * Determines whether the key has been marked to be part of a bulk operation
      * (in order to provide a "Do not show again (this operation)" option).
      * @param prefKey the preference key
+     * @return {@code true} if the key has been marked to be part of a bulk operation
      */
     public static boolean isInBulkOperation(final String prefKey) {
         return immediateActive.contains(prefKey);
@@ -112,6 +113,7 @@ public final class ConditionalOptionPaneUtil {
      * @param defaultOption the default option; only meaningful if options is used; can be null
      *
      * @return the option selected by user. {@link JOptionPane#CLOSED_OPTION} if the dialog was closed.
+     * @throws HeadlessException if <code>GraphicsEnvironment.isHeadless</code> returns <code>true</code>
      */
     public static int showOptionDialog(String preferenceKey, Component parent, Object message, String title, int optionType,
             int messageType, Object[] options, Object defaultOption) throws HeadlessException {
@@ -152,6 +154,7 @@ public final class ConditionalOptionPaneUtil {
      *
      *
      * @return true, if the selected option is equal to <code>trueOption</code>, otherwise false.
+     * @throws HeadlessException if <code>GraphicsEnvironment.isHeadless</code> returns <code>true</code>
      *
      * @see JOptionPane#INFORMATION_MESSAGE
      * @see JOptionPane#WARNING_MESSAGE
@@ -203,7 +206,7 @@ public final class ConditionalOptionPaneUtil {
     /**
      * An enum designating how long to not show this message again, i.e., for how long to store
      */
-    static enum NotShowAgain {
+    enum NotShowAgain {
         NO, OPERATION, SESSION, PERMANENT;
 
         /**
@@ -261,7 +264,7 @@ public final class ConditionalOptionPaneUtil {
          *                otherwise a JLabel with the string representation is added)
          * @param displayImmediateOption whether to provide "Do not show again (this session)"
          */
-        public MessagePanel(Object message, boolean displayImmediateOption) {
+        MessagePanel(Object message, boolean displayImmediateOption) {
             cbStandard.setSelected(true);
             ButtonGroup group = new ButtonGroup();
             group.add(cbShowPermanentDialog);
diff --git a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java b/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
index e63ba24..56999d9 100644
--- a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
+++ b/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
@@ -36,8 +36,8 @@ import org.openstreetmap.josm.data.osm.history.HistoryNode;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.data.osm.history.HistoryRelation;
 import org.openstreetmap.josm.data.osm.history.HistoryWay;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetNameTemplateList;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetNameTemplateList;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.Utils;
@@ -93,11 +93,11 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
     /** The default list of tags which are used as naming tags in relations.
      * A ? prefix indicates a boolean value, for which the key (instead of the value) is used.
      */
-    public static final String[] DEFAULT_NAMING_TAGS_FOR_RELATIONS = {"name", "ref", "restriction", "landuse", "natural",
+    protected static final String[] DEFAULT_NAMING_TAGS_FOR_RELATIONS = {"name", "ref", "restriction", "landuse", "natural",
         "public_transport", ":LocationCode", "note", "?building"};
 
     /** the current list of tags used as naming tags in relations */
-    private static List<String> namingTagsForRelations =  null;
+    private static List<String> namingTagsForRelations;
 
     /**
      * Replies the list of naming tags used in relations. The list is given (in this order) by:
@@ -357,7 +357,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
             if (relationName == null) {
                 relationName = Long.toString(relation.getId());
             } else {
-                relationName = "\"" + relationName + "\"";
+                relationName = '\"' + relationName + '\"';
             }
             result.append(" (").append(relationName).append(", ");
         } else {
@@ -421,7 +421,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return relationComparator;
     }
 
-    private String getRelationTypeName(IRelation relation) {
+    private static String getRelationTypeName(IRelation relation) {
         String name = trc("Relation type", relation.get("type"));
         if (name == null) {
             name = (relation.get("public_transport") != null) ? tr("public transport") : null;
@@ -442,7 +442,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         }
         String admin_level = relation.get("admin_level");
         if (admin_level != null) {
-            name += "["+admin_level+"]";
+            name += '['+admin_level+']';
         }
 
         for (NameFormatterHook hook: formatHooks) {
@@ -454,7 +454,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return name;
     }
 
-    private String getNameTagValue(IRelation relation, String nameTag) {
+    private static String getNameTagValue(IRelation relation, String nameTag) {
         if ("name".equals(nameTag)) {
             if (Main.pref.getBoolean("osm-primitives.localize-name", true))
                 return relation.getLocalName();
@@ -508,7 +508,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return buildDefaultToolTip(primitive.getId(), primitive.getKeys());
     }
 
-    private String buildDefaultToolTip(long id, Map<String, String> tags) {
+    private static String buildDefaultToolTip(long id, Map<String, String> tags) {
         StringBuilder sb = new StringBuilder();
         sb.append("<html><strong>id</strong>=")
           .append(id)
@@ -622,7 +622,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         }
         /* note: length == 0 should no longer happen, but leave the bracket code
            nevertheless, who knows what future brings */
-        sb.append((sb.length() > 0) ? " ("+nodes+")" : nodes);
+        sb.append((sb.length() > 0) ? " ("+nodes+')' : nodes);
         decorateNameWithId(sb, way);
         return sb.toString();
     }
@@ -663,7 +663,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         if (nameTag == null) {
             sb.append(Long.toString(relation.getId())).append(", ");
         } else {
-            sb.append("\"").append(nameTag).append("\", ");
+            sb.append('\"').append(nameTag).append("\", ");
         }
 
         int mbno = relation.getNumMembers();
diff --git a/src/org/openstreetmap/josm/gui/ExtendedDialog.java b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
index 51d6590..366219a 100644
--- a/src/org/openstreetmap/josm/gui/ExtendedDialog.java
+++ b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
@@ -74,11 +74,11 @@ import org.openstreetmap.josm.tools.WindowGeometry;
  */
 public class ExtendedDialog extends JDialog {
     private final boolean disposeOnClose;
-    private volatile int result = 0;
+    private volatile int result;
     public static final int DialogClosedOtherwise = 0;
-    private boolean toggleable = false;
+    private boolean toggleable;
     private String rememberSizePref = "";
-    private transient WindowGeometry defaultWindowGeometry = null;
+    private transient WindowGeometry defaultWindowGeometry;
     private String togglePref = "";
     private int toggleValue = -1;
     private ConditionalOptionPaneUtil.MessagePanel togglePanel;
@@ -89,10 +89,10 @@ public class ExtendedDialog extends JDialog {
     private transient Icon[] bIcons;
     private Set<Integer> cancelButtonIdx = Collections.emptySet();
     private int defaultButtonIdx = 1;
-    protected JButton defaultButton = null;
+    protected JButton defaultButton;
     private transient Icon icon;
     private boolean modal;
-    private boolean focusOnDefaultButton = false;
+    private boolean focusOnDefaultButton;
 
     /** true, if the dialog should include a help button */
     private boolean showHelpButton;
@@ -303,7 +303,7 @@ public class ExtendedDialog extends JDialog {
         return result;
     }
 
-    private boolean setupDone = false;
+    private boolean setupDone;
 
     /**
      * This is called by {@link #showDialog()}.
@@ -656,7 +656,7 @@ public class ExtendedDialog extends JDialog {
         /**
          * Constructs a new {@code HelpAction}.
          */
-        public HelpAction() {
+        HelpAction() {
             putValue(SHORT_DESCRIPTION, tr("Show help information"));
             putValue(NAME, tr("Help"));
             putValue(SMALL_ICON, ImageProvider.get("help"));
diff --git a/src/org/openstreetmap/josm/gui/FileDrop.java b/src/org/openstreetmap/josm/gui/FileDrop.java
index 0be6f55..9ad1a69 100644
--- a/src/org/openstreetmap/josm/gui/FileDrop.java
+++ b/src/org/openstreetmap/josm/gui/FileDrop.java
@@ -154,7 +154,7 @@ public class FileDrop {
     }
 
     // BEGIN 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-    private static final String ZERO_CHAR_STRING = "" + (char) 0;
+    private static final String ZERO_CHAR_STRING = Character.toString((char) 0);
 
     private static File[] createFileArray(BufferedReader bReader) {
         try {
@@ -225,8 +225,12 @@ public class FileDrop {
         }
     }
 
-    /** Determine if the dragged data is a file list. */
-    private boolean isDragOk(final DropTargetDragEvent evt) {
+    /**
+     * Determines if the dragged data is a file list.
+     * @param evt the drag event
+     * @return {@code true} if the dragged data is a file list
+     */
+    private static boolean isDragOk(final DropTargetDragEvent evt) {
         boolean ok = false;
 
         // Get data flavors being dragged
diff --git a/src/org/openstreetmap/josm/gui/GettingStarted.java b/src/org/openstreetmap/josm/gui/GettingStarted.java
index 5d959a1..5ca8b19 100644
--- a/src/org/openstreetmap/josm/gui/GettingStarted.java
+++ b/src/org/openstreetmap/josm/gui/GettingStarted.java
@@ -37,7 +37,7 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
 
     private final LinkGeneral lg;
     private String content = "";
-    private boolean contentInitialized = false;
+    private boolean contentInitialized;
 
     private static final String STYLE = "<style type=\"text/css\">\n"
             + "body {font-family: sans-serif; font-weight: bold; }\n"
@@ -72,7 +72,7 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
      * Grabs current MOTD from cache or webpage and parses it.
      */
     private static class MotdContent extends CacheCustomContent<IOException> {
-        public MotdContent() {
+        MotdContent() {
             super("motd.html", CacheCustomContent.INTERVAL_DAILY);
         }
 
@@ -176,7 +176,7 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
             String im = m.group(1);
             URL u = getClass().getResource(im);
             if (u != null) {
-                m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + u + "\""));
+                m.appendReplacement(sb, Matcher.quoteReplacement("src=\"" + u + '\"'));
             }
         }
         m.appendTail(sb);
diff --git a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
index e42420e..9c3bdb7 100644
--- a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
+++ b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
@@ -110,7 +110,7 @@ public final class HelpAwareOptionPane {
         private JOptionPane pane;
         private int value;
 
-        public DefaultAction(JDialog dialog, JOptionPane pane, int value) {
+        DefaultAction(JDialog dialog, JOptionPane pane, int value) {
             this.dialog = dialog;
             this.pane = pane;
             this.value = value;
diff --git a/src/org/openstreetmap/josm/gui/IconToggleButton.java b/src/org/openstreetmap/josm/gui/IconToggleButton.java
index 8550570..3a4492c 100644
--- a/src/org/openstreetmap/josm/gui/IconToggleButton.java
+++ b/src/org/openstreetmap/josm/gui/IconToggleButton.java
@@ -25,7 +25,7 @@ public class IconToggleButton extends JToggleButton implements HideableButton, P
 
     public boolean groupbutton;
     private transient ShowHideButtonListener listener;
-    private boolean hideIfDisabled = false;
+    private boolean hideIfDisabled;
     private boolean isExpert;
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
index dc01bc2..27fc39a 100644
--- a/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
+++ b/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.gui;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Component;
 import java.text.MessageFormat;
 
 import org.openstreetmap.josm.Main;
@@ -64,7 +63,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener{
             if (OsmApi.isUsingOAuth() && OAuthAccessTokenHolder.getInstance().containsAccessToken() &&
                     !Main.isOffline(OnlineResource.OSM_API)) {
                 try {
-                    instance.initFromOAuth(Main.parent);
+                    instance.initFromOAuth();
                 } catch (Exception e) {
                     Main.error(e);
                     // Fall back to preferences if OAuth identification fails for any reason
@@ -210,11 +209,10 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener{
     /**
      * Initializes the user identity manager from OAuth request of user details.
      * This method should be called if {@code osm-server.auth-method} is set to {@code oauth}.
-     * @param parent component relative to which the {@link PleaseWaitDialog} is displayed.
      * @see #initFromPreferences
      * @since 5434
      */
-    public void initFromOAuth(Component parent) {
+    public void initFromOAuth() {
         try {
             UserInfo info = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE);
             setFullyIdentified(info.getDisplayName(), info);
@@ -282,7 +280,7 @@ public final class JosmUserIdentityManager implements PreferenceChangedListener{
             accessTokenSecretChanged = false;
             if (OsmApi.isUsingOAuth()) {
                 try {
-                    getInstance().initFromOAuth(Main.parent);
+                    getInstance().initFromOAuth();
                 } catch (Exception e) {
                     Main.error(e);
                 }
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java
index 4cc50ff..5198e66 100644
--- a/src/org/openstreetmap/josm/gui/MainApplication.java
+++ b/src/org/openstreetmap/josm/gui/MainApplication.java
@@ -125,15 +125,15 @@ public class MainApplication extends Main {
                 tr("usage")+":\n"+
                 "\tjava -jar josm.jar <options>...\n\n"+
                 tr("options")+":\n"+
-                "\t--help|-h                                 "+tr("Show this help")+"\n"+
-                "\t--geometry=widthxheight(+|-)x(+|-)y       "+tr("Standard unix geometry argument")+"\n"+
-                "\t[--download=]minlat,minlon,maxlat,maxlon  "+tr("Download the bounding box")+"\n"+
-                "\t[--download=]<URL>                        "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z)")+"\n"+
-                "\t[--download=]<filename>                   "+tr("Open a file (any file type that can be opened with File/Open)")+"\n"+
-                "\t--downloadgps=minlat,minlon,maxlat,maxlon "+tr("Download the bounding box as raw GPS")+"\n"+
-                "\t--downloadgps=<URL>                       "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS")+"\n"+
-                "\t--selection=<searchstring>                "+tr("Select with the given search")+"\n"+
-                "\t--[no-]maximize                           "+tr("Launch in maximized mode")+"\n"+
+                "\t--help|-h                                 "+tr("Show this help")+'\n'+
+                "\t--geometry=widthxheight(+|-)x(+|-)y       "+tr("Standard unix geometry argument")+'\n'+
+                "\t[--download=]minlat,minlon,maxlat,maxlon  "+tr("Download the bounding box")+'\n'+
+                "\t[--download=]<URL>                        "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z)")+'\n'+
+                "\t[--download=]<filename>                   "+tr("Open a file (any file type that can be opened with File/Open)")+'\n'+
+                "\t--downloadgps=minlat,minlon,maxlat,maxlon "+tr("Download the bounding box as raw GPS")+'\n'+
+                "\t--downloadgps=<URL>                       "+tr("Download the location at the URL (with lat=x&lon=y&zoom=z) as raw GPS")+'\n'+
+                "\t--selection=<searchstring>                "+tr("Select with the given search")+'\n'+
+                "\t--[no-]maximize                           "+tr("Launch in maximized mode")+'\n'+
                 "\t--reset-preferences                       "+tr("Reset the preferences to default")+"\n\n"+
                 "\t--load-preferences=<url-to-xml>           "+tr("Changes preferences according to the XML file")+"\n\n"+
                 "\t--set=<key>=<value>                       "+tr("Set preference key to value")+"\n\n"+
@@ -154,14 +154,14 @@ public class MainApplication extends Main {
                         "\t-Xmx...m\n\n"+
                         tr("examples")+":\n"+
                         "\tjava -jar josm.jar track1.gpx track2.gpx london.osm\n"+
-                        "\tjava -jar josm.jar "+OsmUrlToBounds.getURL(43.2, 11.1, 13)+"\n"+
+                        "\tjava -jar josm.jar "+OsmUrlToBounds.getURL(43.2, 11.1, 13)+'\n'+
                         "\tjava -jar josm.jar london.osm --selection=http://www.ostertag.name/osm/OSM_errors_node-duplicate.xml\n"+
                         "\tjava -jar josm.jar 43.2,11.1,43.4,11.4\n"+
                         "\tjava -Djosm.pref=$XDG_CONFIG_HOME -Djosm.userdata=$XDG_DATA_HOME -Djosm.cache=$XDG_CACHE_HOME -jar josm.jar\n"+
                         "\tjava -Djosm.home=/home/user/.josm_dev -jar josm.jar\n"+
                         "\tjava -Xmx1024m -jar josm.jar\n\n"+
-                        tr("Parameters --download, --downloadgps, and --selection are processed in this order.")+"\n"+
-                        tr("Make sure you load some data if you use --selection.")+"\n"
+                        tr("Parameters --download, --downloadgps, and --selection are processed in this order.")+'\n'+
+                        tr("Make sure you load some data if you use --selection.")+'\n'
                 );
     }
 
@@ -211,7 +211,7 @@ public class MainApplication extends Main {
         private final boolean requiresArg;
 
         Option(boolean requiresArgument) {
-            this.name = name().toLowerCase(Locale.ENGLISH).replace("_", "-");
+            this.name = name().toLowerCase(Locale.ENGLISH).replace('_', '-');
             this.requiresArg = requiresArgument;
         }
 
@@ -593,7 +593,7 @@ public class MainApplication extends Main {
         private final Map<Option, Collection<String>> args;
         private final DefaultProxySelector proxySelector;
 
-        public GuiFinalizationWorker(Map<Option, Collection<String>> args, DefaultProxySelector proxySelector) {
+        GuiFinalizationWorker(Map<Option, Collection<String>> args, DefaultProxySelector proxySelector) {
             this.args = args;
             this.proxySelector = proxySelector;
         }
@@ -616,7 +616,7 @@ public class MainApplication extends Main {
             DownloadDialog.autostartIfNeeded();
         }
 
-        private void handleAutosave() {
+        private static void handleAutosave() {
             if (AutosaveTask.PROP_AUTOSAVE_ENABLED.get()) {
                 AutosaveTask autosaveTask = new AutosaveTask();
                 List<File> unsavedLayerFiles = autosaveTask.getUnsavedLayersFiles();
diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
index 12598f8..0573b46 100644
--- a/src/org/openstreetmap/josm/gui/MainMenu.java
+++ b/src/org/openstreetmap/josm/gui/MainMenu.java
@@ -96,7 +96,6 @@ import org.openstreetmap.josm.actions.SaveAsAction;
 import org.openstreetmap.josm.actions.SearchNotesDownloadAction;
 import org.openstreetmap.josm.actions.SelectAllAction;
 import org.openstreetmap.josm.actions.SelectNonBranchingWaySequencesAction;
-import org.openstreetmap.josm.actions.SessionLoadAction;
 import org.openstreetmap.josm.actions.SessionSaveAsAction;
 import org.openstreetmap.josm.actions.ShowStatusReportAction;
 import org.openstreetmap.josm.actions.SimplifyWayAction;
@@ -130,10 +129,9 @@ import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.mappaint.MapPaintMenu;
 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetSearchAction;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetSearchPrimitiveDialog;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSearchAction;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSearchPrimitiveDialog;
 import org.openstreetmap.josm.gui.widgets.DisableShortcutsOnFocusGainedTextField;
-import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -146,7 +144,7 @@ import org.openstreetmap.josm.tools.Shortcut;
  */
 public class MainMenu extends JMenuBar {
 
-    public static enum WINDOW_MENU_GROUP { ALWAYS, TOGGLE_DIALOG, VOLATILE }
+    public enum WINDOW_MENU_GROUP { ALWAYS, TOGGLE_DIALOG, VOLATILE }
 
     /* File menu */
     /** File / New Layer **/
@@ -161,8 +159,6 @@ public class MainMenu extends JMenuBar {
     public final SaveAction save = SaveAction.getInstance();
     /** File / Save As... **/
     public final SaveAsAction saveAs = SaveAsAction.getInstance();
-    /** File / Session > Load Session **/
-    public SessionLoadAction sessionLoad;
     /** File / Session > Save Session As... **/
     public SessionSaveAsAction sessionSaveAs;
     /** File / Export to GPX... **/
@@ -330,10 +326,6 @@ public class MainMenu extends JMenuBar {
      */
     public final JMenu fileMenu = addMenu("File", /* I18N: mnemonic: F */ trc("menu", "File"), KeyEvent.VK_F, 0, ht("/Menu/File"));
     /**
-     * sessionMenu is a submenu of File menu containing all session actions
-     */
-    public final JMenu sessionMenu = new JMenu(tr("Session"));
-    /**
      * editMenu contains editing actions
      */
     public final JMenu editMenu = addMenu("Edit", /* I18N: mnemonic: E */ trc("menu", "Edit"), KeyEvent.VK_E, 1, ht("/Menu/Edit"));
@@ -350,6 +342,7 @@ public class MainMenu extends JMenuBar {
      * moreToolsMenu contains geometry-related actions from all the plugins
      * @since 6082 (moved from Utilsplugin2)
      */
+    // CHECKSTYLE.OFF: LineLength
     public final JMenu moreToolsMenu = addMenu("More tools", /* I18N: mnemonic: M */ trc("menu", "More tools"), KeyEvent.VK_M, 4, ht("/Menu/MoreTools"));
     /**
      * dataMenu contains plugin actions that are related to certain tagging schemes (addressing opening hours),
@@ -374,7 +367,6 @@ public class MainMenu extends JMenuBar {
     /**
      * imageryMenu contains all imagery-related actions
      */
-    // CHECKSTYLE.OFF: LineLength
     public final ImageryMenu imageryMenu = addMenu(new ImageryMenu(imagerySubMenu), /* I18N: mnemonic: I */ "Imagery", KeyEvent.VK_I, 8, ht("/Menu/Imagery"));
     // CHECKSTYLE.ON: LineLength
     /**
@@ -393,7 +385,7 @@ public class MainMenu extends JMenuBar {
     /**
      * audioMenu contains all audio-related actions. Be careful, this menu is not guaranteed to be displayed at all
      */
-    public JMenu audioMenu = null;
+    public JMenu audioMenu;
     /**
      * helpMenu contains JOSM general actions (Help, About, etc.)
      */
@@ -409,7 +401,7 @@ public class MainMenu extends JMenuBar {
     public final TaggingPresetSearchAction presetSearchAction = new TaggingPresetSearchAction();
     public final TaggingPresetSearchPrimitiveDialog.Action presetSearchPrimitiveAction = new TaggingPresetSearchPrimitiveDialog.Action();
     public final DialogsToggleAction dialogsToggleAction = new DialogsToggleAction();
-    public FullscreenToggleAction fullscreenToggleAction = null;
+    public FullscreenToggleAction fullscreenToggleAction;
 
     /**
      * Popup menu to display menu items search result.
@@ -605,15 +597,6 @@ public class MainMenu extends JMenuBar {
     }
 
     /**
-     * @deprecated Use {@link #addMenu(String, String, int, int, String)} instead.
-     */
-    // Kept for compatibility with plugins
-    @Deprecated
-    public JMenu addMenu(String name, int mnemonicKey, int position, String relativeHelpTopic) {
-        return addMenu(name, tr(name), mnemonicKey, position, relativeHelpTopic);
-    }
-
-    /**
      * Creates a menu and adds it on the given position to the main menu.
      *
      * @param name              the untranslated name (used as identifier for shortcut registration)
@@ -664,14 +647,8 @@ public class MainMenu extends JMenuBar {
         fileMenu.addSeparator();
         add(fileMenu, save);
         add(fileMenu, saveAs);
-        sessionMenu.setToolTipText(tr("Save and load the current session (list of layers, etc.)"));
-        sessionMenu.setIcon(new ImageProvider("session").setSize(ImageProvider.ImageSizes.MENU).get());
         sessionSaveAs = new SessionSaveAsAction();
-        sessionLoad = new SessionLoadAction();
-        add(sessionMenu, sessionSaveAs);
-        add(sessionMenu, sessionLoad);
-        fileMenu.add(sessionMenu);
-        ExpertToggleAction.addVisibilitySwitcher(sessionMenu);
+        ExpertToggleAction.addVisibilitySwitcher(fileMenu.add(sessionSaveAs));
         add(fileMenu, gpxExport, true);
         fileMenu.addSeparator();
         add(fileMenu, download);
@@ -868,6 +845,7 @@ public class MainMenu extends JMenuBar {
 
     /**
      * Create search field.
+     * @return the search field
      */
     private DisableShortcutsOnFocusGainedTextField createSearchField() {
         DisableShortcutsOnFocusGainedTextField searchField = new DisableShortcutsOnFocusGainedTextField() {
@@ -922,7 +900,7 @@ public class MainMenu extends JMenuBar {
      * @param textToFind The text to find
      * @param result resulting list ofmenu items
      */
-    private void findMenuItems(final JMenu menu, final String textToFind, final List<JMenuItem> result) {
+    private static void findMenuItems(final JMenu menu, final String textToFind, final List<JMenuItem> result) {
         for (int i = 0; i < menu.getItemCount(); i++) {
             JMenuItem menuItem = menu.getItem(i);
             if (menuItem == null) continue;
@@ -961,7 +939,7 @@ public class MainMenu extends JMenuBar {
     static class PresetsMenuEnabler implements MapView.LayerChangeListener {
         private JMenu presetsMenu;
 
-        public PresetsMenuEnabler(JMenu presetsMenu) {
+        PresetsMenuEnabler(JMenu presetsMenu) {
             MapView.addLayerChangeListener(this);
             this.presetsMenu = presetsMenu;
         }
@@ -1028,9 +1006,9 @@ public class MainMenu extends JMenuBar {
     private class SearchFieldTextListener implements DocumentListener {
         private final JTextField searchField;
         private final MainMenu mainMenu;
-        private String currentSearchText = null;
+        private String currentSearchText;
 
-        public SearchFieldTextListener(MainMenu mainMenu, JTextField searchField) {
+        SearchFieldTextListener(MainMenu mainMenu, JTextField searchField) {
             this.mainMenu = mainMenu;
             this.searchField = searchField;
         }
diff --git a/src/org/openstreetmap/josm/gui/MapFrame.java b/src/org/openstreetmap/josm/gui/MapFrame.java
index 723ebd9..2bbce98 100644
--- a/src/org/openstreetmap/josm/gui/MapFrame.java
+++ b/src/org/openstreetmap/josm/gui/MapFrame.java
@@ -140,11 +140,11 @@ public class MapFrame extends JPanel implements Destroyable, LayerChangeListener
 
     // Map modes
     public final SelectAction mapModeSelect;
+    public final DrawAction mapModeDraw;
+    public final ZoomAction mapModeZoom;
     public LassoModeAction mapModeSelectLasso;
 
     private final transient Map<Layer, MapMode> lastMapMode = new HashMap<>();
-    private final MapMode mapModeDraw;
-    private final MapMode mapModeZoom;
 
     /**
      * The status line below the map
@@ -329,6 +329,7 @@ public class MapFrame extends JPanel implements Destroyable, LayerChangeListener
     /**
      * Call this to add new toggle dialogs to the left button-list
      * @param dlg The toggle dialog. It must not be in the list already.
+     * @return button allowing to toggle the dialog
      */
     public IconToggleButton addToggleDialog(final ToggleDialog dlg, boolean isExpert) {
         final IconToggleButton button = new IconToggleButton(dlg.getToggleAction(), isExpert);
@@ -547,7 +548,7 @@ public class MapFrame extends JPanel implements Destroyable, LayerChangeListener
         private JButton button;
         private transient Collection<? extends HideableButton> buttons;
 
-        public ListAllButtonsAction(Collection<? extends HideableButton> buttons) {
+        ListAllButtonsAction(Collection<? extends HideableButton> buttons) {
             this.buttons = buttons;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/MapMover.java b/src/org/openstreetmap/josm/gui/MapMover.java
index d8ea39a..4de6049 100644
--- a/src/org/openstreetmap/josm/gui/MapMover.java
+++ b/src/org/openstreetmap/josm/gui/MapMover.java
@@ -37,7 +37,7 @@ public class MapMover extends MouseAdapter implements MouseMotionListener, Mouse
     private final class ZoomerAction extends AbstractAction {
         private final String action;
 
-        public ZoomerAction(String action) {
+        ZoomerAction(String action) {
             this.action = action;
         }
 
@@ -82,7 +82,7 @@ public class MapMover extends MouseAdapter implements MouseMotionListener, Mouse
     private final NavigatableComponent nc;
     private final JPanel contentPane;
 
-    private boolean movementInPlace = false;
+    private boolean movementInPlace;
 
     /**
      * Constructs a new {@code MapMover}.
diff --git a/src/org/openstreetmap/josm/gui/MapSlider.java b/src/org/openstreetmap/josm/gui/MapSlider.java
index abaf934..fab953d 100644
--- a/src/org/openstreetmap/josm/gui/MapSlider.java
+++ b/src/org/openstreetmap/josm/gui/MapSlider.java
@@ -16,9 +16,9 @@ import org.openstreetmap.josm.gui.help.Helpful;
 class MapSlider extends JSlider implements PropertyChangeListener, ChangeListener, Helpful {
 
     private final MapView mv;
-    private boolean preventChange = false;
+    private boolean preventChange;
 
-    public MapSlider(MapView mv) {
+    MapSlider(MapView mv) {
         super(35, 150);
         setOpaque(false);
         this.mv = mv;
diff --git a/src/org/openstreetmap/josm/gui/MapStatus.java b/src/org/openstreetmap/josm/gui/MapStatus.java
index 51e87e2..53ba33e 100644
--- a/src/org/openstreetmap/josm/gui/MapStatus.java
+++ b/src/org/openstreetmap/josm/gui/MapStatus.java
@@ -32,6 +32,8 @@ import java.util.Collection;
 import java.util.ConcurrentModificationException;
 import java.util.List;
 import java.util.TreeSet;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -196,7 +198,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
     private double distValue;
 
     // Determines if angle panel is enabled or not
-    private boolean angleEnabled = false;
+    private boolean angleEnabled;
 
     /**
      * This is the thread that runs in the background and collects the information displayed.
@@ -210,7 +212,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
         private final Object id;
         private final String text;
 
-        public StatusTextHistory(Object id, String text) {
+        StatusTextHistory(Object id, String text) {
             this.id = id;
             this.text = text;
         }
@@ -339,7 +341,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
          * Contains the labels that are currently shown in the information
          * popup
          */
-        private List<JLabel> popupLabels = null;
+        private List<JLabel> popupLabels;
         /**
          * The popup displayed to show additional information
          */
@@ -347,7 +349,11 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
 
         private MapFrame parent;
 
-        public Collector(MapFrame parent) {
+        private final BlockingQueue<MouseState> incomingMouseState = new LinkedBlockingQueue<>();
+
+        private Point lastMousePos;
+
+        Collector(MapFrame parent) {
             this.parent = parent;
         }
 
@@ -359,28 +365,16 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
             registerListeners();
             try {
                 for (;;) {
+                    try {
+                        final MouseState ms = incomingMouseState.take();
+                        if (parent != Main.map)
+                            return; // exit, if new parent.
 
-                    final MouseState ms = new MouseState();
-                    synchronized (this) {
-                        // TODO Would be better if the timeout wasn't necessary
-                        try {
-                            wait(1000);
-                        } catch (InterruptedException e) {
-                            // Occurs frequently during JOSM shutdown, log set to trace only
-                            Main.trace("InterruptedException in "+MapStatus.class.getSimpleName());
+                        // Do nothing, if required data is missing
+                        if (ms.mousePos == null || mv.center == null) {
+                            continue;
                         }
-                        ms.modifiers = mouseState.modifiers;
-                        ms.mousePos = mouseState.mousePos;
-                    }
-                    if (parent != Main.map)
-                        return; // exit, if new parent.
 
-                    // Do nothing, if required data is missing
-                    if (ms.mousePos == null || mv.center == null) {
-                        continue;
-                    }
-
-                    try {
                         EventQueue.invokeAndWait(new CollectorWorker(ms));
                     } catch (InterruptedException e) {
                         // Occurs frequently during JOSM shutdown, log set to trace only
@@ -649,20 +643,36 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
             });
             return l;
         }
+
+        /**
+         * Called whenever the mouse position or modifiers changed.
+         * @param mousePos The new mouse position. <code>null</code> if it did not change.
+         * @param modifiers The new modifiers.
+         */
+        public synchronized void updateMousePosition(Point mousePos, int modifiers) {
+            if (mousePos != null) {
+                lastMousePos = mousePos;
+            }
+            MouseState ms = new MouseState(lastMousePos, modifiers);
+            // remove mouse states that are in the queue. Our mouse state is newer.
+            incomingMouseState.clear();
+            incomingMouseState.offer(ms);
+        }
     }
 
     /**
      * Everything, the collector is interested of. Access must be synchronized.
      * @author imi
      */
-    static class MouseState {
-        private Point mousePos;
-        private int modifiers;
+    private static class MouseState {
+        private final Point mousePos;
+        private final int modifiers;
+
+        MouseState(Point mousePos, int modifiers) {
+            this.mousePos = mousePos;
+            this.modifiers = modifiers;
+        }
     }
-    /**
-     * The last sent mouse movement event.
-     */
-    private transient MouseState mouseState = new MouseState();
 
     private transient AWTEventListener awtListener = new AWTEventListener() {
          @Override
@@ -670,11 +680,12 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
             if (event instanceof InputEvent &&
                     ((InputEvent) event).getComponent() == mv) {
                 synchronized (collector) {
-                    mouseState.modifiers = ((InputEvent) event).getModifiersEx();
+                    int modifiers = ((InputEvent) event).getModifiersEx();
+                    Point mousePos = null;
                     if (event instanceof MouseEvent) {
-                        mouseState.mousePos = ((MouseEvent) event).getPoint();
+                        mousePos = ((MouseEvent) event).getPoint();
                     }
-                    collector.notifyAll();
+                    collector.updateMousePosition(mousePos, modifiers);
                 }
             }
         }
@@ -684,9 +695,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
         @Override
         public void mouseMoved(MouseEvent e) {
             synchronized (collector) {
-                mouseState.modifiers = e.getModifiersEx();
-                mouseState.mousePos = e.getPoint();
-                collector.notifyAll();
+                collector.updateMousePosition(e.getPoint(), e.getModifiersEx());
             }
         }
 
@@ -699,8 +708,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
     private transient KeyAdapter keyAdapter = new KeyAdapter() {
         @Override public void keyPressed(KeyEvent e) {
             synchronized (collector) {
-                mouseState.modifiers = e.getModifiersEx();
-                collector.notifyAll();
+                collector.updateMousePosition(null, e.getModifiersEx());
             }
         }
 
@@ -750,7 +758,7 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
             }
         });
 
-        public MapStatusPopupMenu() {
+        MapStatusPopupMenu() {
             for (final String key : new TreeSet<>(SystemOfMeasurement.ALL_SYSTEMS.keySet())) {
                 JCheckBoxMenuItem item = new JCheckBoxMenuItem(new AbstractAction(key) {
                     @Override
@@ -926,7 +934,6 @@ public class MapStatus extends JPanel implements Helpful, Destroyable, Preferenc
 
     @Override
     public synchronized void addMouseListener(MouseListener ml) {
-        //super.addMouseListener(ml);
         lonText.addMouseListener(ml);
         latText.addMouseListener(ml);
     }
diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java
index eff7bb6..e98315d 100644
--- a/src/org/openstreetmap/josm/gui/MapView.java
+++ b/src/org/openstreetmap/josm/gui/MapView.java
@@ -122,7 +122,7 @@ implements PropertyChangeListener, PreferenceChangedListener, OsmDataLayer.Layer
         void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer);
     }
 
-    public boolean viewportFollowing = false;
+    public boolean viewportFollowing;
 
     /**
      * the layer listeners
@@ -224,30 +224,22 @@ implements PropertyChangeListener, PreferenceChangedListener, OsmDataLayer.Layer
     }
 
     /**
-     * A list of all layers currently loaded. Locked by {@link #layerLock}.
+     * A list of all layers currently loaded.
      */
     private final transient List<Layer> layers = new ArrayList<>();
 
     /**
-     * This lock manages concurrent access to {@link #layers},
-     * {@link #editLayer} and {@link #activeLayer}.
-     * <p>
-     * The read lock is always held while those fields are read or while layer change listeners are fired.
-     */
-    //private final ReentrantReadWriteLock layerLock = new ReentrantReadWriteLock();
-
-    /**
      * The play head marker: there is only one of these so it isn't in any specific layer
      */
-    public transient PlayHeadMarker playHeadMarker = null;
+    public transient PlayHeadMarker playHeadMarker;
 
     /**
-     * The layer from the layers list that is currently active. Locked by {@link #layerLock}.
+     * The layer from the layers list that is currently active.
      */
     private transient Layer activeLayer;
 
     /**
-     * The edit layer is the current active data layer. Locked by {@link #layerLock}.
+     * The edit layer is the current active data layer.
      */
     private transient OsmDataLayer editLayer;
 
@@ -341,8 +333,8 @@ implements PropertyChangeListener, PreferenceChangedListener, OsmDataLayer.Layer
     }
 
     // remebered geometry of the component
-    private Dimension oldSize = null;
-    private Point oldLoc = null;
+    private Dimension oldSize;
+    private Point oldLoc;
 
     /**
      * Call this method to keep map position on screen during next repaint
@@ -534,7 +526,7 @@ implements PropertyChangeListener, PreferenceChangedListener, OsmDataLayer.Layer
         refreshTitle();
     }
 
-    private boolean virtualNodesEnabled = false;
+    private boolean virtualNodesEnabled;
 
     public void setVirtualNodesEnabled(boolean enabled) {
         if (virtualNodesEnabled != enabled) {
@@ -875,7 +867,6 @@ implements PropertyChangeListener, PreferenceChangedListener, OsmDataLayer.Layer
     /**
      * Sets the active edit layer.
      * <p>
-     * You must own a write {@link #layerLock} when calling this method.
      * @param layersList A list to select that layer from.
      * @return A list of change listeners that should be fired using {@link #onActiveEditLayerChanged(Layer, OsmDataLayer, EnumSet)}
      */
diff --git a/src/org/openstreetmap/josm/gui/MenuScroller.java b/src/org/openstreetmap/josm/gui/MenuScroller.java
index 5eff228..4124953 100644
--- a/src/org/openstreetmap/josm/gui/MenuScroller.java
+++ b/src/org/openstreetmap/josm/gui/MenuScroller.java
@@ -49,7 +49,7 @@ public class MenuScroller {
     private final MouseWheelListener mouseWheelListener = new MouseScrollListener();
     private int interval;
     private int topFixedCount;
-    private int firstIndex = 0;
+    private int firstIndex;
 
     private static final int ARROW_ICON_HEIGHT = 10;
 
@@ -427,7 +427,7 @@ public class MenuScroller {
 
     private class MenuScrollTimer extends Timer {
 
-        public MenuScrollTimer(final int increment, int interval) {
+        MenuScrollTimer(final int increment, int interval) {
             super(interval, new ActionListener() {
 
                 @Override
@@ -444,7 +444,7 @@ public class MenuScroller {
 
         private MenuScrollTimer timer;
 
-        public MenuScrollItem(MenuIcon icon, int increment) {
+        MenuScrollItem(MenuIcon icon, int increment) {
             setIcon(icon);
             setDisabledIcon(icon);
             timer = new MenuScrollTimer(increment, interval);
@@ -466,7 +466,7 @@ public class MenuScroller {
         }
     }
 
-    private static enum MenuIcon implements Icon {
+    private enum MenuIcon implements Icon {
 
         UP(9, 1, 9),
         DOWN(1, 9, 1);
diff --git a/src/org/openstreetmap/josm/gui/NavigatableComponent.java b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
index d9d8810..f1785cc 100644
--- a/src/org/openstreetmap/josm/gui/NavigatableComponent.java
+++ b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
@@ -74,15 +74,6 @@ public class NavigatableComponent extends JComponent implements Helpful {
         void zoomChanged();
     }
 
-    /**
-     * Interface to notify listeners of the change of the system of measurement.
-     * @since 6056
-     * @deprecated use {@link org.openstreetmap.josm.data.SystemOfMeasurement.SoMChangeListener} instead.
-     */
-    @Deprecated
-    public interface SoMChangeListener extends SystemOfMeasurement.SoMChangeListener {
-    }
-
     public transient Predicate<OsmPrimitive> isSelectablePredicate = new Predicate<OsmPrimitive>() {
         @Override
         public boolean evaluate(OsmPrimitive prim) {
@@ -133,54 +124,6 @@ public class NavigatableComponent extends JComponent implements Helpful {
         }
     }
 
-
-    /**
-     * Removes a SoM change listener.
-     *
-     * @param listener the listener. Ignored if null or already absent
-     * @since 6056
-     * @deprecated use {@link SystemOfMeasurement#removeSoMChangeListener} instead.
-     */
-    @Deprecated
-    public static void removeSoMChangeListener(NavigatableComponent.SoMChangeListener listener) {
-        SystemOfMeasurement.removeSoMChangeListener(listener);
-    }
-
-    /**
-     * Adds a SoM change listener
-     *
-     * @param listener the listener. Ignored if null or already registered.
-     * @since 6056
-     * @deprecated use {@link SystemOfMeasurement#addSoMChangeListener} instead.
-     */
-    @Deprecated
-    public static void addSoMChangeListener(NavigatableComponent.SoMChangeListener listener) {
-        SystemOfMeasurement.addSoMChangeListener(listener);
-    }
-
-    /**
-     * Returns the current system of measurement.
-     * @return The current system of measurement (metric system by default).
-     * @since 3490
-     * @deprecated use {@link SystemOfMeasurement#getSystemOfMeasurement} instead.
-     */
-    @Deprecated
-    public static SystemOfMeasurement getSystemOfMeasurement() {
-        return SystemOfMeasurement.getSystemOfMeasurement();
-    }
-
-    /**
-     * Sets the current system of measurement.
-     * @param somKey The system of measurement key. Must be defined in {@link SystemOfMeasurement#ALL_SYSTEMS}.
-     * @throws IllegalArgumentException if {@code somKey} is not known
-     * @since 6056
-     * @deprecated use {@link SystemOfMeasurement#setSystemOfMeasurement} instead.
-     */
-    @Deprecated
-    public static void setSystemOfMeasurement(String somKey) {
-        SystemOfMeasurement.setSystemOfMeasurement(somKey);
-    }
-
     private double scale = Main.getProjection().getDefaultZoomInPPD();
     /**
      * Center n/e coordinate of the desired screen center.
@@ -188,8 +131,8 @@ public class NavigatableComponent extends JComponent implements Helpful {
     protected EastNorth center = calculateDefaultCenter();
 
     private final transient Object paintRequestLock = new Object();
-    private Rectangle paintRect = null;
-    private Polygon paintPoly = null;
+    private Rectangle paintRect;
+    private Polygon paintPoly;
 
     protected transient ViewportData initialViewport;
 
@@ -206,7 +149,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
         return Main.main.getCurrentDataSet();
     }
 
-    private EastNorth calculateDefaultCenter() {
+    private static EastNorth calculateDefaultCenter() {
         Bounds b = DownloadDialog.getSavedDownloadBounds();
         if (b == null) {
             b = Main.getProjection().getWorldBoundsLatLon();
@@ -634,7 +577,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
         private final LatLon center;
         private final double scale;
 
-        public ZoomData(EastNorth center, double scale) {
+        ZoomData(EastNorth center, double scale) {
             this.center = Projections.inverseProject(center);
             this.scale = scale;
         }
@@ -1437,8 +1380,8 @@ public class NavigatableComponent extends JComponent implements Helpful {
      * @return A unique ID, as long as viewport dimensions are the same
      */
     public int getViewID() {
-        String x = center.east() + "_" + center.north() + "_" + scale + "_" +
-                getWidth() + "_" + getHeight() + "_" + getProjection().toString();
+        String x = center.east() + '_' + center.north() + '_' + scale + '_' +
+                getWidth() + '_' + getHeight() + '_' + getProjection().toString();
         CRC32 id = new CRC32();
         id.update(x.getBytes(StandardCharsets.UTF_8));
         return (int) id.getValue();
diff --git a/src/org/openstreetmap/josm/gui/NotificationManager.java b/src/org/openstreetmap/josm/gui/NotificationManager.java
index a2a73b7..1f9e429 100644
--- a/src/org/openstreetmap/josm/gui/NotificationManager.java
+++ b/src/org/openstreetmap/josm/gui/NotificationManager.java
@@ -70,7 +70,7 @@ class NotificationManager {
     private long displayTimeStart;
     private long elapsedTime;
 
-    private static NotificationManager INSTANCE = null;
+    private static NotificationManager INSTANCE;
 
     private static final Color PANEL_SEMITRANSPARENT = new Color(224, 236, 249, 230);
     private static final Color PANEL_OPAQUE = new Color(224, 236, 249);
@@ -82,7 +82,7 @@ class NotificationManager {
         return INSTANCE;
     }
 
-    public NotificationManager() {
+    NotificationManager() {
         queue = new LinkedList<>();
         hideTimer = new Timer(defaultNotificationTime, new HideEvent());
         hideTimer.setRepeats(false);
@@ -185,7 +185,7 @@ class NotificationManager {
 
         private JPanel innerPanel;
 
-        public NotificationPanel(Notification note) {
+        NotificationPanel(Notification note) {
             setVisible(false);
             build(note);
         }
@@ -309,7 +309,7 @@ class NotificationManager {
 
         class HideAction extends AbstractAction {
 
-            public HideAction() {
+            HideAction() {
                 putValue(SMALL_ICON, ImageProvider.get("misc", "grey_x"));
             }
 
@@ -344,7 +344,7 @@ class NotificationManager {
      */
     public static class RoundedPanel extends JPanel {
 
-        public RoundedPanel() {
+        RoundedPanel() {
             super();
             setOpaque(false);
         }
diff --git a/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java b/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
index 48bfb5a..e9da9e3 100644
--- a/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
+++ b/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui;
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.ImageIcon;
@@ -66,13 +67,15 @@ public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, Tabl
      * Internal method that stuffs information into the rendering component
      * provided that it's a kind of JLabel.
      * @param def the rendering component
-     * @param value the OsmPrimtive to render
+     * @param value the OsmPrimitive to render
      * @return the modified rendering component
      */
     private Component renderer(Component def, OsmPrimitive value) {
         if (value != null && def instanceof JLabel) {
             ((JLabel) def).setText(getComponentText(value));
-            ImageIcon icon = ImageProvider.get(value.getDisplayType());
+            ImageIcon icon = ImageProvider.getPadded(value,
+                // Height of component no yet known, assume the default 16px.
+                new Rectangle(16, 16));
             if (icon != null) {
                 ((JLabel) def).setIcon(icon);
             } else {
@@ -87,7 +90,7 @@ public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, Tabl
      * Internal method that stuffs information into the rendering component
      * provided that it's a kind of JLabel.
      * @param def the rendering component
-     * @param value the HistoryOsmPrimtive to render
+     * @param value the HistoryOsmPrimitive to render
      * @return the modified rendering component
      */
     private Component renderer(Component def, HistoryOsmPrimitive value) {
@@ -100,14 +103,20 @@ public class OsmPrimitivRenderer implements ListCellRenderer<OsmPrimitive>, Tabl
     }
 
     /**
-     * Can be overridden to customize the Text
+     * Returns the text representing an OSM primitive in a component.
+     * Can be overridden to customize the text
+     * @param value OSM primitive
+     * @return text representing the OSM primitive
      */
     protected String getComponentText(OsmPrimitive value) {
         return value.getDisplayName(DefaultNameFormatter.getInstance());
     }
 
     /**
+     * Returns the text representing an OSM primitive in a tooltip.
      * Can be overridden to customize the ToolTipText
+     * @param value OSM primitive
+     * @return text representing the OSM primitive
      */
     protected String getComponentToolTipText(OsmPrimitive value) {
         return formatter.buildDefaultToolTip(value);
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
index 3eb1ad3..43339e1 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
@@ -23,7 +23,7 @@ import org.xml.sax.SAXException;
  * @author Imi
  */
 public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
-    private boolean canceled = false;
+    private boolean canceled;
     private boolean ignoreException;
     private final String title;
 
diff --git a/src/org/openstreetmap/josm/gui/ScrollViewport.java b/src/org/openstreetmap/josm/gui/ScrollViewport.java
index 5e708d1..110184d 100644
--- a/src/org/openstreetmap/josm/gui/ScrollViewport.java
+++ b/src/org/openstreetmap/josm/gui/ScrollViewport.java
@@ -40,16 +40,18 @@ public class ScrollViewport extends JPanel {
     private class ScrollViewPortMouseListener extends MouseAdapter {
         private int direction;
 
-        public ScrollViewPortMouseListener(int direction) {
+        ScrollViewPortMouseListener(int direction) {
             this.direction = direction;
         }
 
-        @Override public void mouseExited(MouseEvent arg0) {
+        @Override
+        public void mouseExited(MouseEvent arg0) {
             ScrollViewport.this.scrollDirection = NO_SCROLL;
             timer.stop();
         }
 
-        @Override public void mouseReleased(MouseEvent arg0) {
+        @Override
+        public void mouseReleased(MouseEvent arg0) {
             ScrollViewport.this.scrollDirection = NO_SCROLL;
             timer.stop();
         }
@@ -63,7 +65,7 @@ public class ScrollViewport extends JPanel {
     }
 
     private JViewport vp = new JViewport();
-    private JComponent component = null;
+    private JComponent component;
 
     private List<JButton> buttons = new ArrayList<>();
 
diff --git a/src/org/openstreetmap/josm/gui/SelectionManager.java b/src/org/openstreetmap/josm/gui/SelectionManager.java
index f7fc904..b1f7d08 100644
--- a/src/org/openstreetmap/josm/gui/SelectionManager.java
+++ b/src/org/openstreetmap/josm/gui/SelectionManager.java
@@ -367,7 +367,7 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
         }
     }
 
-    private void selectionAreaChanged() {
+    private static void selectionAreaChanged() {
         // Trigger a redraw of the map view.
         // A nicer way would be to provide change events for the temporary layer.
         Main.map.mapView.repaint();
@@ -435,7 +435,7 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
         return selection;
     }
 
-    private Polygon rectToPolygon(Rectangle r) {
+    private static Polygon rectToPolygon(Rectangle r) {
         Polygon poly = new Polygon();
 
         poly.addPoint(r.x, r.y);
diff --git a/src/org/openstreetmap/josm/gui/SideButton.java b/src/org/openstreetmap/josm/gui/SideButton.java
index ce75642..7da1e8d 100644
--- a/src/org/openstreetmap/josm/gui/SideButton.java
+++ b/src/org/openstreetmap/josm/gui/SideButton.java
@@ -68,7 +68,11 @@ public class SideButton extends JButton implements Destroyable {
         }
     }
 
-    /** scales the given image proportionally so that the height is "iconHeight" **/
+    /**
+     * Scales the given image proportionally so that the height is "iconHeight"
+     * @param im original image
+     * @return scaled image
+     */
     private static ImageIcon getScaledImage(Image im) {
         int newWidth = im.getWidth(null) *  iconHeight / im.getHeight(null);
         return new ImageIcon(im.getScaledInstance(newWidth, iconHeight, Image.SCALE_SMOOTH));
diff --git a/src/org/openstreetmap/josm/gui/SplashScreen.java b/src/org/openstreetmap/josm/gui/SplashScreen.java
index 834714f..8239636 100644
--- a/src/org/openstreetmap/josm/gui/SplashScreen.java
+++ b/src/org/openstreetmap/josm/gui/SplashScreen.java
@@ -136,6 +136,8 @@ public class SplashScreen extends JFrame implements ChangeListener {
 
         /**
          * Returns a HTML representation for this task.
+         * @param sb a {@code StringBuilder} used to build the HTML code
+         * @return {@code sb}
          */
         public abstract StringBuilder toHtml(StringBuilder sb);
 
@@ -154,7 +156,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
         private final long start;
         private String duration = "";
 
-        public MeasurableTask(String name) {
+        MeasurableTask(String name) {
             this.name = name;
             this.start = System.currentTimeMillis();
         }
@@ -380,7 +382,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
         /**
          * Constructs a new {@code SplashScreenProgressRenderer}.
          */
-        public SplashScreenProgressRenderer() {
+        SplashScreenProgressRenderer() {
             build();
         }
 
diff --git a/src/org/openstreetmap/josm/gui/bbox/SizeButton.java b/src/org/openstreetmap/josm/gui/bbox/SizeButton.java
index b5ccad2..03c4329 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SizeButton.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SizeButton.java
@@ -19,12 +19,12 @@ import org.openstreetmap.josm.tools.ImageProvider;
  */
 public class SizeButton extends JComponent {
 
-    private int x = 0;
-    private int y = 0;
+    private int x;
+    private int y;
 
     private ImageIcon enlargeImage;
     private ImageIcon shrinkImage;
-    private boolean isEnlarged = false;
+    private boolean isEnlarged;
     private final SlippyMapBBoxChooser slippyMapBBoxChooser;
 
     public SizeButton(SlippyMapBBoxChooser slippyMapBBoxChooser) {
diff --git a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
index c237a81..9f3c45f 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
@@ -197,10 +197,6 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
         return attribution.handleAttribution(p, click);
     }
 
-    protected Point getTopLeftCoordinates() {
-        return new Point(center.x - (getWidth() / 2), center.y - (getHeight() / 2));
-    }
-
     /**
      * Draw the map.
      */
diff --git a/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java b/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java
index d2b9de1..82c328a 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SlippyMapControler.java
@@ -48,6 +48,11 @@ public class SlippyMapControler extends MouseAdapter implements MouseMotionListe
 
     private static final int MAC_MOUSE_BUTTON3_MASK = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
 
+    private static final String[] N = {
+            ",", ".", "up", "right", "down", "left"};
+    private static final int[] K = {
+            KeyEvent.VK_COMMA, KeyEvent.VK_PERIOD, KeyEvent.VK_UP, KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT};
+
     // start and end point of selection rectangle
     private Point iStartSelectionPoint;
     private Point iEndSelectionPoint;
@@ -64,13 +69,10 @@ public class SlippyMapControler extends MouseAdapter implements MouseMotionListe
         iSlippyMapChooser.addMouseListener(this);
         iSlippyMapChooser.addMouseMotionListener(this);
 
-        String[] n = {",", ".", "up", "right", "down", "left"};
-        int[] k = {KeyEvent.VK_COMMA, KeyEvent.VK_PERIOD, KeyEvent.VK_UP, KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN, KeyEvent.VK_LEFT};
-
         if (contentPane != null) {
-            for (int i = 0; i < n.length; ++i) {
+            for (int i = 0; i < N.length; ++i) {
                 contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
-                        KeyStroke.getKeyStroke(k[i], KeyEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + n[i]);
+                        KeyStroke.getKeyStroke(K[i], KeyEvent.CTRL_DOWN_MASK), "MapMover.Zoomer." + N[i]);
             }
         }
         isSelecting = false;
@@ -169,7 +171,7 @@ public class SlippyMapControler extends MouseAdapter implements MouseMotionListe
 
         private int direction;
 
-        public MoveXAction(int direction) {
+        MoveXAction(int direction) {
             this.direction = direction;
         }
 
@@ -183,7 +185,7 @@ public class SlippyMapControler extends MouseAdapter implements MouseMotionListe
 
         private int direction;
 
-        public MoveYAction(int direction) {
+        MoveYAction(int direction) {
             this.direction = direction;
         }
 
@@ -202,16 +204,16 @@ public class SlippyMapControler extends MouseAdapter implements MouseMotionListe
         private double speedY = 1;
 
         /** The horizontal direction of movement, -1:left, 0:stop, 1:right */
-        private int directionX = 0;
+        private int directionX;
 
         /** The vertical direction of movement, -1:up, 0:stop, 1:down */
-        private int directionY = 0;
+        private int directionY;
 
         /**
          * Indicated if <code>moveTask</code> is currently enabled (periodically
          * executed via timer) or disabled
          */
-        protected boolean scheduled = false;
+        protected boolean scheduled;
 
         protected void setDirectionX(int directionX) {
             this.directionX = directionX;
diff --git a/src/org/openstreetmap/josm/gui/bbox/SourceButton.java b/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
index 51088af..3f6bd7e 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SourceButton.java
@@ -39,7 +39,7 @@ public class SourceButton extends JComponent {
     private Dimension shownDimension;
     private Font font;
 
-    private boolean isEnlarged = false;
+    private boolean isEnlarged;
 
     private int currentMap;
     private final SlippyMapBBoxChooser slippyMapBBoxChooser;
diff --git a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
index a28193e..a180274 100644
--- a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
@@ -332,7 +332,7 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser{
             setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
         }
 
-        public TileGridInputPanel() {
+        TileGridInputPanel() {
             build();
         }
 
@@ -499,7 +499,7 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser{
             add(new JPanel(), gc);
         }
 
-        public TileAddressInputPanel() {
+        TileAddressInputPanel() {
             setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
             build();
         }
@@ -509,7 +509,7 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser{
         }
 
         class ApplyTileAddressAction extends AbstractAction {
-            public ApplyTileAddressAction() {
+            ApplyTileAddressAction() {
                 putValue(SMALL_ICON, ImageProvider.get("apply"));
                 putValue(SHORT_DESCRIPTION, tr("Apply the tile address"));
             }
@@ -529,9 +529,9 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser{
      */
     private static class TileAddressValidator extends AbstractTextComponentValidator {
 
-        private TileBounds tileBounds = null;
+        private TileBounds tileBounds;
 
-        public TileAddressValidator(JTextComponent tc) {
+        TileAddressValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -590,7 +590,7 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser{
         private int zoomLevel;
         private int tileIndex;
 
-        public TileCoordinateValidator(JTextComponent tc) {
+        TileCoordinateValidator(JTextComponent tc) {
             super(tc);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java
index bdcc627..afe6f6f 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ConflictResolver.java
@@ -66,7 +66,7 @@ public class ConflictResolver extends JPanel implements PropertyChangeListener
      */
     public static final String THEIR_PRIMITIVE_PROP = ConflictResolver.class.getName() + ".theirPrimitive";
 
-    private JTabbedPane tabbedPane = null;
+    private JTabbedPane tabbedPane;
     private TagMerger tagMerger;
     private NodeListMerger nodeListMerger;
     private RelationMemberMerger relationMemberMerger;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java b/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
index 7ca19bb..438b149 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
@@ -87,7 +87,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends Observable {
     protected EntriesSelectionModel mergedEntriesSelectionModel;
 
     private final Set<PropertyChangeListener> listeners;
-    private boolean isFrozen = false;
+    private boolean isFrozen;
     private final ComparePairListModel comparePairListModel;
 
     private DataSet myDataset;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
index d6aa74a..822f758 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
@@ -434,7 +434,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class CopyStartLeftAction extends CopyAction {
 
-        public CopyStartLeftAction() {
+        CopyStartLeftAction() {
             super(/* ICON(dialogs/conflict/)*/ "copystartleft", tr("> top"),
                 tr("Copy my selected nodes to the start of the merged node list"));
         }
@@ -456,7 +456,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class CopyEndLeftAction extends CopyAction {
 
-        public CopyEndLeftAction() {
+        CopyEndLeftAction() {
             super(/* ICON(dialogs/conflict/)*/ "copyendleft", tr("> bottom"),
                 tr("Copy my selected elements to the end of the list of merged elements."));
         }
@@ -478,7 +478,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class CopyBeforeCurrentLeftAction extends CopyAction {
 
-        public CopyBeforeCurrentLeftAction() {
+        CopyBeforeCurrentLeftAction() {
             super(/* ICON(dialogs/conflict/)*/ "copybeforecurrentleft", tr("> before"),
                     tr("Copy my selected elements before the first selected element in the list of merged elements."));
         }
@@ -508,7 +508,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class CopyAfterCurrentLeftAction extends CopyAction {
 
-        public CopyAfterCurrentLeftAction() {
+        CopyAfterCurrentLeftAction() {
             super(/* ICON(dialogs/conflict/)*/ "copyaftercurrentleft", tr("> after"),
                     tr("Copy my selected elements after the first selected element in the list of merged elements."));
         }
@@ -534,7 +534,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyStartRightAction extends CopyAction {
 
-        public CopyStartRightAction() {
+        CopyStartRightAction() {
             super(/* ICON(dialogs/conflict/)*/ "copystartright", tr("< top"),
                 tr("Copy their selected element to the start of the list of merged elements."));
         }
@@ -552,7 +552,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyEndRightAction extends CopyAction {
 
-        public CopyEndRightAction() {
+        CopyEndRightAction() {
             super(/* ICON(dialogs/conflict/)*/ "copyendright", tr("< bottom"),
                 tr("Copy their selected elements to the end of the list of merged elements."));
         }
@@ -570,7 +570,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyBeforeCurrentRightAction extends CopyAction {
 
-        public CopyBeforeCurrentRightAction() {
+        CopyBeforeCurrentRightAction() {
             super(/* ICON(dialogs/conflict/)*/ "copybeforecurrentright", tr("< before"),
                     tr("Copy their selected elements before the first selected element in the list of merged elements."));
         }
@@ -596,7 +596,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyAfterCurrentRightAction extends CopyAction {
 
-        public CopyAfterCurrentRightAction() {
+        CopyAfterCurrentRightAction() {
             super(/* ICON(dialogs/conflict/)*/ "copyaftercurrentright", tr("< after"),
                     tr("Copy their selected element after the first selected element in the list of merged elements"));
         }
@@ -622,7 +622,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyAllLeft extends AbstractAction implements Observer, PropertyChangeListener {
 
-        public CopyAllLeft() {
+        CopyAllLeft() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "useallleft");
             putValue(Action.SMALL_ICON, icon);
             putValue(Action.SHORT_DESCRIPTION, tr("Copy all my elements to the target"));
@@ -651,7 +651,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class CopyAllRight extends AbstractAction implements Observer, PropertyChangeListener {
 
-        public CopyAllRight() {
+        CopyAllRight() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "useallright");
             putValue(Action.SMALL_ICON, icon);
             putValue(Action.SHORT_DESCRIPTION, tr("Copy all their elements to the target"));
@@ -680,7 +680,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
 
     class MoveUpMergedAction extends AbstractAction implements ListSelectionListener {
 
-        public MoveUpMergedAction() {
+        MoveUpMergedAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "moveup");
             putValue(Action.SMALL_ICON, icon);
             if (icon == null) {
@@ -714,7 +714,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class MoveDownMergedAction extends AbstractAction implements ListSelectionListener {
 
-        public MoveDownMergedAction() {
+        MoveDownMergedAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "movedown");
             putValue(Action.SMALL_ICON, icon);
             if (icon == null) {
@@ -748,7 +748,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
      */
     class RemoveMergedAction extends AbstractAction implements ListSelectionListener {
 
-        public RemoveMergedAction() {
+        RemoveMergedAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "remove");
             putValue(Action.SMALL_ICON, icon);
             if (icon == null) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
index 52c8ef6..ab8d82b 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
@@ -52,7 +52,7 @@ public  class NodeListTableCellRenderer extends JLabel implements TableCellRende
      * @param node the node
      * @param isSelected true, if the current row is selected
      */
-    protected  void renderNode(ListMergeModel<Node>.EntriesTableModel model, Node node, int row, boolean isSelected) {
+    protected void renderNode(ListMergeModel<Node>.EntriesTableModel model, Node node, int row, boolean isSelected) {
         setIcon(icon);
         setBorder(null);
         if (model.getListMergeModel().isFrozen()) {
@@ -83,11 +83,10 @@ public  class NodeListTableCellRenderer extends JLabel implements TableCellRende
 
     /**
      * render the row id
-     * @param model  the model
+     * @param model the model
      * @param row the row index
-     * @param isSelected true, if the current row is selected
      */
-    protected  void renderRowId(ListMergeModel<Node>.EntriesTableModel model, int row, boolean isSelected) {
+    protected void renderRowId(ListMergeModel<Node>.EntriesTableModel model, int row) {
         setIcon(null);
         setBorder(rowNumberBorder);
         if (model.getListMergeModel().isFrozen()) {
@@ -110,7 +109,7 @@ public  class NodeListTableCellRenderer extends JLabel implements TableCellRende
         } else {
             switch(column) {
             case 0:
-                renderRowId(getModel(table), row, isSelected);
+                renderRowId(getModel(table), row);
                 break;
             case 1:
                 renderNode(getModel(table), node, row, isSelected);
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
index 3ccdff6..03b634c 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
@@ -391,7 +391,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class KeepMyCoordinatesAction extends AbstractAction implements Observer {
-        public KeepMyCoordinatesAction() {
+        KeepMyCoordinatesAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeepmine"));
             putValue(Action.SHORT_DESCRIPTION, tr("Keep my coordinates"));
         }
@@ -408,7 +408,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class KeepTheirCoordinatesAction extends AbstractAction implements Observer {
-        public KeepTheirCoordinatesAction() {
+        KeepTheirCoordinatesAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeeptheir"));
             putValue(Action.SHORT_DESCRIPTION, tr("Keep their coordinates"));
         }
@@ -425,7 +425,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class UndecideCoordinateConflictAction extends AbstractAction implements Observer {
-        public UndecideCoordinateConflictAction() {
+        UndecideCoordinateConflictAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagundecide"));
             putValue(Action.SHORT_DESCRIPTION, tr("Undecide conflict between different coordinates"));
         }
@@ -442,7 +442,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class KeepMyDeletedStateAction extends AbstractAction implements Observer {
-        public KeepMyDeletedStateAction() {
+        KeepMyDeletedStateAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeepmine"));
             putValue(Action.SHORT_DESCRIPTION, tr("Keep my deleted state"));
         }
@@ -459,7 +459,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class KeepTheirDeletedStateAction extends AbstractAction implements Observer {
-        public KeepTheirDeletedStateAction() {
+        KeepTheirDeletedStateAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeeptheir"));
             putValue(Action.SHORT_DESCRIPTION, tr("Keep their deleted state"));
         }
@@ -476,7 +476,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     }
 
     class UndecideDeletedStateConflictAction extends AbstractAction implements Observer {
-        public UndecideDeletedStateConflictAction() {
+        UndecideDeletedStateConflictAction() {
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagundecide"));
             putValue(Action.SHORT_DESCRIPTION, tr("Undecide conflict between deleted state"));
         }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java b/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
index 16e8e37..10242e6 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
@@ -22,7 +22,7 @@ import org.openstreetmap.josm.tools.ImageProvider;
  *
  */
 public  class RelationMemberTableCellRenderer extends JLabel implements TableCellRenderer {
-    private transient Border rowNumberBorder = null;
+    private transient Border rowNumberBorder;
 
     /**
      * constructor
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItem.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItem.java
index cbd35eb..dc24076 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItem.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItem.java
@@ -16,9 +16,9 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  */
 public class TagMergeItem {
 
-    private String key = null;
-    private String myTagValue = null;
-    private String theirTagValue = null;
+    private String key;
+    private String myTagValue;
+    private String theirTagValue;
     private MergeDecisionType mergeDecision = MergeDecisionType.UNDECIDED;
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java
index 2d1b6a1..2764900 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModel.java
@@ -37,7 +37,7 @@ public class TagMergeModel extends DefaultTableModel {
     /** the property change listeners */
     private final transient Set<PropertyChangeListener> listeners;
 
-    private int numUndecidedTags = 0;
+    private int numUndecidedTags;
 
     /**
      * Constructs a new {@code TagMergeModel}.
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
index af7f2f5..a7cfcf5 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
@@ -269,7 +269,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
      *
      */
     class KeepMineAction extends AbstractAction implements ListSelectionListener {
-        public KeepMineAction() {
+        KeepMineAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagkeepmine");
             if (icon != null) {
                 putValue(Action.SMALL_ICON, icon);
@@ -301,7 +301,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
      *
      */
     class KeepTheirAction extends AbstractAction implements ListSelectionListener {
-        public KeepTheirAction() {
+        KeepTheirAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagkeeptheir");
             if (icon != null) {
                 putValue(Action.SMALL_ICON, icon);
@@ -338,7 +338,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
     static class AdjustmentSynchronizer implements AdjustmentListener {
         private final Set<Adjustable> synchronizedAdjustables;
 
-        public AdjustmentSynchronizer() {
+        AdjustmentSynchronizer() {
             synchronizedAdjustables = new HashSet<>();
         }
 
@@ -399,7 +399,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
      */
     class UndecideAction extends AbstractAction implements ListSelectionListener  {
 
-        public UndecideAction() {
+        UndecideAction() {
             ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagundecide");
             if (icon != null) {
                 putValue(Action.SMALL_ICON, icon);
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
index 1f4b6bb..7247e85 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
@@ -9,6 +9,7 @@ import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
+import java.awt.GraphicsEnvironment;
 import java.awt.event.ActionEvent;
 import java.awt.event.HierarchyBoundsListener;
 import java.awt.event.HierarchyEvent;
@@ -17,11 +18,8 @@ import java.awt.event.WindowEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 import javax.swing.AbstractAction;
@@ -36,7 +34,6 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.corrector.UserCancelException;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -50,8 +47,7 @@ import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Predicates;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.Utils.Function;
 import org.openstreetmap.josm.tools.WindowGeometry;
@@ -297,48 +293,12 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         return cmds;
     }
 
-    protected void prepareDefaultTagDecisions() {
-        getTagConflictResolverModel().prepareDefaultTagDecisions();
-    }
-
-    protected void prepareDefaultRelationDecisions() {
-        final RelationMemberConflictResolverModel model = getRelationMemberConflictResolverModel();
-        final Map<Relation, Integer> numberOfKeepResolutions = new HashMap<>();
-        final MultiMap<OsmPrimitive, Relation> resolvedRelationsPerPrimitive = new MultiMap<>();
-
-        for (int i = 0; i < model.getNumDecisions(); i++) {
-            final RelationMemberConflictDecision decision = model.getDecision(i);
-            final Relation r = decision.getRelation();
-            final OsmPrimitive p = decision.getOriginalPrimitive();
-            if (!numberOfKeepResolutions.containsKey(r)) {
-                decision.decide(RelationMemberConflictDecisionType.KEEP);
-                numberOfKeepResolutions.put(r, 1);
-                resolvedRelationsPerPrimitive.put(p, r);
-                continue;
-            }
-
-            final Integer keepResolutions = numberOfKeepResolutions.get(r);
-            final Collection<Relation> resolvedRelations = Utils.firstNonNull(
-                    resolvedRelationsPerPrimitive.get(p), Collections.<Relation>emptyList());
-            if (keepResolutions <= Utils.filter(resolvedRelations, Predicates.equalTo(r)).size()) {
-                // old relation contains one primitive more often than the current resolution => keep the current member
-                decision.decide(RelationMemberConflictDecisionType.KEEP);
-                numberOfKeepResolutions.put(r, keepResolutions + 1);
-                resolvedRelationsPerPrimitive.put(p, r);
-            } else {
-                decision.decide(RelationMemberConflictDecisionType.REMOVE);
-                resolvedRelationsPerPrimitive.put(p, r);
-            }
-        }
-        model.refresh();
-    }
-
     /**
      * Prepares the default decisions for populated tag and relation membership conflicts.
      */
     public void prepareDefaultDecisions() {
-        prepareDefaultTagDecisions();
-        prepareDefaultRelationDecisions();
+        getTagConflictResolverModel().prepareDefaultTagDecisions();
+        getRelationMemberConflictResolverModel().prepareDefaultRelationDecisions();
     }
 
     protected JPanel buildEmptyConflictsPanel() {
@@ -405,7 +365,7 @@ public class CombinePrimitiveResolverDialog extends JDialog {
 
     class CancelAction extends AbstractAction {
 
-        public CancelAction() {
+        CancelAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Cancel conflict resolution"));
             putValue(Action.NAME, tr("Cancel"));
             putValue(Action.SMALL_ICON, ImageProvider.get("", "cancel"));
@@ -464,7 +424,7 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     static class AutoAdjustingSplitPane extends JSplitPane implements PropertyChangeListener, HierarchyBoundsListener {
         private double dividerLocation;
 
-        public AutoAdjustingSplitPane(int newOrientation) {
+        AutoAdjustingSplitPane(int newOrientation) {
             super(newOrientation);
             addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, this);
             addHierarchyBoundsListener(this);
@@ -534,31 +494,34 @@ public class CombinePrimitiveResolverDialog extends JDialog {
             }
         }
 
-        // Build conflict resolution dialog
-        final CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
+        List<Command> cmds = new LinkedList<>();
 
-        dialog.getTagConflictResolverModel().populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues());
-        dialog.getRelationMemberConflictResolverModel().populate(parentRelations, primitives);
-        dialog.prepareDefaultDecisions();
+        if (!GraphicsEnvironment.isHeadless()) {
+            // Build conflict resolution dialog
+            final CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
 
-        // Ensure a proper title is displayed instead of a previous target (fix #7925)
-        if (targetPrimitives.size() == 1) {
-            dialog.setTargetPrimitive(targetPrimitives.iterator().next());
-        } else {
-            dialog.setTargetPrimitive(null);
-        }
+            dialog.getTagConflictResolverModel().populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues());
+            dialog.getRelationMemberConflictResolverModel().populate(parentRelations, primitives);
+            dialog.prepareDefaultDecisions();
 
-        // Resolve tag conflicts if necessary
-        if (!dialog.isResolvedCompletely()) {
-            dialog.setVisible(true);
-            if (dialog.isCanceled()) {
-                throw new UserCancelException();
+            // Ensure a proper title is displayed instead of a previous target (fix #7925)
+            if (targetPrimitives.size() == 1) {
+                dialog.setTargetPrimitive(targetPrimitives.iterator().next());
+            } else {
+                dialog.setTargetPrimitive(null);
+            }
+
+            // Resolve tag conflicts if necessary
+            if (!dialog.isResolvedCompletely()) {
+                dialog.setVisible(true);
+                if (dialog.isCanceled()) {
+                    throw new UserCancelException();
+                }
+            }
+            for (OsmPrimitive i : targetPrimitives) {
+                dialog.setTargetPrimitive(i);
+                cmds.addAll(dialog.buildResolutionCommands());
             }
-        }
-        List<Command> cmds = new LinkedList<>();
-        for (OsmPrimitive i : targetPrimitives) {
-            dialog.setTargetPrimitive(i);
-            cmds.addAll(dialog.buildResolutionCommands());
         }
         return cmds;
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
index 54aea99..1559dd0 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
@@ -195,7 +195,7 @@ public class MultiValueCellEditor extends AbstractCellEditor implements TableCel
         /**
          * Construct a new {@link EditorCellRenderer}.
          */
-        public EditorCellRenderer() {
+        EditorCellRenderer() {
             setOpaque(true);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
index b279fc1..186bdb0 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
@@ -61,7 +61,7 @@ public class PasteTagsConflictResolverDialog extends JDialog  implements Propert
     private transient Map<OsmPrimitiveType, TagConflictResolver> resolvers;
     private JTabbedPane tpResolvers;
     private Mode mode;
-    private boolean canceled = false;
+    private boolean canceled;
 
     private final ImageIcon iconResolved;
     private final ImageIcon iconUnresolved;
@@ -362,12 +362,12 @@ public class PasteTagsConflictResolverDialog extends JDialog  implements Propert
 
     private static final class StatisticsInfo {
         public int numTags;
-        public Map<OsmPrimitiveType, Integer> sourceInfo;
-        public Map<OsmPrimitiveType, Integer> targetInfo;
+        public final Map<OsmPrimitiveType, Integer> sourceInfo;
+        public final Map<OsmPrimitiveType, Integer> targetInfo;
 
         private StatisticsInfo() {
-            sourceInfo = new HashMap<>();
-            targetInfo = new HashMap<>();
+            sourceInfo = new EnumMap<>(OsmPrimitiveType.class);
+            targetInfo = new EnumMap<>(OsmPrimitiveType.class);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
index df720bc..f039c5d 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecision.java
@@ -114,4 +114,10 @@ public class RelationMemberConflictDecision {
             return false;
         return true;
     }
+
+    @Override
+    public String toString() {
+        return originalPrimitive.getPrimitiveId() + " at index " + pos + " with role " + role + " in " + relation.getUniqueId()
+            + " => " + decision;
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
index f0ea47e..242a463 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolver.java
@@ -153,7 +153,7 @@ public class RelationMemberConflictResolver extends JPanel {
     }
 
     class ApplyRoleAction extends AbstractAction {
-        public ApplyRoleAction() {
+        ApplyRoleAction() {
             putValue(NAME, tr("Apply"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
             putValue(SHORT_DESCRIPTION, tr("Apply this role to all members"));
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
index 4963dd3..f217db3 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
@@ -5,10 +5,15 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.TreeSet;
 
 import javax.swing.table.DefaultTableModel;
 
@@ -19,6 +24,8 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Predicate;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
  * This model manages a list of conflicting relation members.
@@ -33,6 +40,8 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
     protected final transient List<RelationMemberConflictDecision> decisions;
     /** the collection of relations for which we manage conflicts */
     protected transient Collection<Relation> relations;
+    /** the collection of primitives for which we manage conflicts */
+    protected transient Collection<? extends OsmPrimitive> primitives;
     /** the number of conflicts */
     private int numConflicts;
     private final PropertyChangeSupport support;
@@ -150,7 +159,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
      */
     public void populate(Collection<Relation> relations, Collection<? extends OsmPrimitive> memberPrimitives) {
         decisions.clear();
-        relations = relations == null ? new LinkedList<Relation>() : relations;
+        relations = relations == null ? Collections.<Relation>emptyList() : relations;
         memberPrimitives = memberPrimitives == null ? new LinkedList<OsmPrimitive>() : memberPrimitives;
         for (Relation r : relations) {
             for (OsmPrimitive p: memberPrimitives) {
@@ -158,6 +167,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
             }
         }
         this.relations = relations;
+        this.primitives = memberPrimitives;
         refresh();
     }
 
@@ -171,14 +181,94 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
         references = references == null ? new LinkedList<RelationToChildReference>() : references;
         decisions.clear();
         this.relations = new HashSet<>(references.size());
+        final Collection<OsmPrimitive> primitives = new HashSet<>();
         for (RelationToChildReference reference: references) {
             decisions.add(new RelationMemberConflictDecision(reference.getParent(), reference.getPosition()));
             relations.add(reference.getParent());
+            primitives.add(reference.getChild());
         }
+        this.primitives = primitives;
         refresh();
     }
 
     /**
+     * Prepare the default decisions for the current model.
+     *
+     * Keep/delete decisions are made if every member has the same role and the members are in consecutive order within the relation.
+     * For multiple occurrences those conditions are tested stepwise for each occurrence.
+     */
+    public void prepareDefaultRelationDecisions() {
+
+        for (final Relation relation : relations) {
+            final Map<OsmPrimitive, List<RelationMemberConflictDecision>> decisionsByPrimitive = new LinkedHashMap<>(primitives.size(), 1);
+            for (final RelationMemberConflictDecision decision : decisions) {
+                if (decision.getRelation() == relation) {
+                    final OsmPrimitive primitive = decision.getOriginalPrimitive();
+                    if (!decisionsByPrimitive.containsKey(primitive)) {
+                        decisionsByPrimitive.put(primitive, new ArrayList<RelationMemberConflictDecision>());
+                    }
+                    decisionsByPrimitive.get(primitive).add(decision);
+                }
+            }
+
+            //noinspection StatementWithEmptyBody
+            if (!decisionsByPrimitive.keySet().containsAll(primitives)) {
+                // some primitives are not part of the relation, leave undecided
+            } else {
+                final Collection<Iterator<RelationMemberConflictDecision>> iterators = new ArrayList<>(primitives.size());
+                for (final Collection<RelationMemberConflictDecision> i : decisionsByPrimitive.values()) {
+                    iterators.add(i.iterator());
+                }
+                while (Utils.forAll(iterators, new Predicate<Iterator<RelationMemberConflictDecision>>() {
+                    @Override
+                    public boolean evaluate(Iterator<RelationMemberConflictDecision> it) {
+                        return it.hasNext();
+                    }
+                })) {
+                    final List<RelationMemberConflictDecision> decisions = new ArrayList<>();
+                    final Collection<String> roles = new HashSet<>();
+                    final Collection<Integer> indices = new TreeSet<>();
+                    for (Iterator<RelationMemberConflictDecision> it : iterators) {
+                        final RelationMemberConflictDecision decision = it.next();
+                        decisions.add(decision);
+                        roles.add(decision.getRole());
+                        indices.add(decision.getPos());
+                    }
+                    if (roles.size() != 1) {
+                        // roles to not patch, leave undecided
+                        continue;
+                    } else if (!isCollectionOfConsecutiveNumbers(indices)) {
+                        // not consecutive members in relation, leave undecided
+                        continue;
+                    }
+                    decisions.get(0).decide(RelationMemberConflictDecisionType.KEEP);
+                    for (RelationMemberConflictDecision decision : decisions.subList(1, decisions.size())) {
+                        decision.decide(RelationMemberConflictDecisionType.REMOVE);
+                    }
+                }
+            }
+        }
+
+        refresh();
+    }
+
+    static boolean isCollectionOfConsecutiveNumbers(Collection<Integer> numbers) {
+        if (numbers.isEmpty()) {
+            return true;
+        }
+        final Iterator<Integer> it = numbers.iterator();
+        Integer previousValue = it.next();
+        while (it.hasNext()) {
+            final Integer i = it.next();
+            if (previousValue + 1 != i) {
+                return false;
+            }
+            previousValue = i;
+        }
+        return true;
+    }
+
+    /**
      * Replies the decision at position <code>row</code>
      *
      * @param row position
@@ -194,7 +284,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
      * @return the number of decisions managed by this model
      */
     public int getNumDecisions() {
-        return decisions == null ? 0 : decisions.size();
+        return decisions == null /* accessed via super constructor */ ? 0 : decisions.size();
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
index 86df3e1..1b05b1c 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolutionUtil.java
@@ -67,7 +67,7 @@ public final class TagConflictResolutionUtil {
     public static void combineTigerTags(TagCollection tc) {
         for (String key: tc.getKeys()) {
             if (TigerUtils.isTigerTag(key)) {
-                tc.setUniqueForKey(key, TigerUtils.combineTags(key, tc.getValues(key)));
+                tc.setUniqueForKey(key, TigerUtils.combineTags(tc.getValues(key)));
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
index 9236add..ed73a24 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
@@ -27,8 +27,8 @@ public class TagConflictResolverModel extends DefaultTableModel {
     private transient Map<String, MultiValueResolutionDecision> decisions;
     private int numConflicts;
     private PropertyChangeSupport support;
-    private boolean showTagsWithConflictsOnly = false;
-    private boolean showTagsWithMultiValuesOnly = false;
+    private boolean showTagsWithConflictsOnly;
+    private boolean showTagsWithMultiValuesOnly;
 
     /**
      * Constructs a new {@code TagConflictResolverModel}.
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
index 5cce5e9..e0e9bfe 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
@@ -292,7 +292,7 @@ public class ChangesetDialog extends ToggleDialog{
      */
     class SelectObjectsAction extends AbstractAction implements ListSelectionListener, ItemListener{
 
-        public SelectObjectsAction() {
+        SelectObjectsAction() {
             putValue(NAME, tr("Select"));
             putValue(SHORT_DESCRIPTION, tr("Select all objects assigned to the currently selected changesets"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
@@ -345,7 +345,7 @@ public class ChangesetDialog extends ToggleDialog{
      *
      */
     class ReadChangesetsAction extends AbstractAction implements ListSelectionListener, ItemListener{
-        public ReadChangesetsAction() {
+        ReadChangesetsAction() {
             putValue(NAME, tr("Download"));
             putValue(SHORT_DESCRIPTION, tr("Download information about the selected changesets from the OSM server"));
             putValue(SMALL_ICON, ImageProvider.get("download"));
@@ -383,7 +383,7 @@ public class ChangesetDialog extends ToggleDialog{
      *
      */
     class CloseOpenChangesetsAction extends AbstractAction implements ListSelectionListener, ItemListener {
-        public CloseOpenChangesetsAction() {
+        CloseOpenChangesetsAction() {
             putValue(NAME, tr("Close open changesets"));
             putValue(SHORT_DESCRIPTION, tr("Closes the selected open changesets"));
             putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
@@ -418,7 +418,7 @@ public class ChangesetDialog extends ToggleDialog{
      *
      */
     class ShowChangesetInfoAction extends AbstractAction implements ListSelectionListener, ItemListener {
-        public ShowChangesetInfoAction() {
+        ShowChangesetInfoAction() {
             putValue(NAME, tr("Show info"));
             putValue(SHORT_DESCRIPTION, tr("Open a web page for each selected changeset"));
             putValue(SMALL_ICON, ImageProvider.get("help/internet"));
@@ -461,7 +461,7 @@ public class ChangesetDialog extends ToggleDialog{
      *
      */
     class LaunchChangesetManagerAction extends AbstractAction {
-        public LaunchChangesetManagerAction() {
+        LaunchChangesetManagerAction() {
             putValue(NAME, tr("Details"));
             putValue(SHORT_DESCRIPTION, tr("Opens the Changeset Manager window for the selected changesets"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/changeset", "changesetmanager"));
@@ -560,7 +560,7 @@ public class ChangesetDialog extends ToggleDialog{
     }
 
     class ChangesetDialogPopup extends ListPopupMenu {
-        public ChangesetDialogPopup(JList<?> ... lists) {
+        ChangesetDialogPopup(JList<?> ... lists) {
             super(lists);
             add(selectObjectsAction);
             addSeparator();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
index cd10095..57279cf 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
@@ -168,7 +168,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     private class UndoRedoSelectionListener implements TreeSelectionListener {
         private JTree source;
 
-        public UndoRedoSelectionListener(JTree source) {
+        UndoRedoSelectionListener(JTree source) {
             this.source = source;
         }
 
@@ -320,6 +320,8 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     /**
      * Wraps a command in a CommandListMutableTreeNode.
      * Recursively adds child commands.
+     * @param c the command
+     * @return the resulting node
      */
     protected CommandListMutableTreeNode getNodeForCommand(PseudoCommand c, int idx) {
         CommandListMutableTreeNode node = new CommandListMutableTreeNode(c, idx);
@@ -485,7 +487,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
 
     class MouseEventHandler extends PopupMenuLauncher {
 
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(new CommandStackPopup());
         }
 
@@ -498,7 +500,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     }
 
     private class CommandStackPopup extends JPopupMenu {
-        public CommandStackPopup() {
+        CommandStackPopup() {
             add(selectAction);
             add(selectAndZoomAction);
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
index fe42550..5dc4304 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
@@ -215,7 +215,7 @@ public final class ConflictDialog extends ToggleDialog implements MapView.EditLa
                     " ("+tr("Rel.:{0} / Ways:{1} / Nodes:{2}",
                             conflicts.getRelationConflicts().size(),
                             conflicts.getWayConflicts().size(),
-                            conflicts.getNodeConflicts().size())+")");
+                            conflicts.getNodeConflicts().size())+')');
         } else {
             setTitle(tr("Conflict"));
         }
@@ -351,7 +351,7 @@ public final class ConflictDialog extends ToggleDialog implements MapView.EditLa
         /**
          * Constructs a new {@code MouseEventHandler}.
          */
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(popupMenu);
         }
 
@@ -373,7 +373,7 @@ public final class ConflictDialog extends ToggleDialog implements MapView.EditLa
         /**
          * Constructs a new {@code ConflictListModel}.
          */
-        public ConflictListModel() {
+        ConflictListModel() {
             listeners = new CopyOnWriteArrayList<>();
         }
 
@@ -430,7 +430,7 @@ public final class ConflictDialog extends ToggleDialog implements MapView.EditLa
     }
 
     class ResolveAction extends AbstractAction implements ListSelectionListener {
-        public ResolveAction() {
+        ResolveAction() {
             putValue(NAME, tr("Resolve"));
             putValue(SHORT_DESCRIPTION,  tr("Open a merge dialog of all selected items in the list above."));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "conflict"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
index f0c3981..9df7dd8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java
@@ -154,7 +154,7 @@ public class ConflictResolutionDialog extends JDialog implements PropertyChangeL
      * Action for canceling conflict resolution
      */
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Cancel conflict resolution and close the dialog"));
             putValue(Action.NAME, tr("Cancel"));
             putValue(Action.SMALL_ICON, ImageProvider.get("", "cancel"));
@@ -171,7 +171,7 @@ public class ConflictResolutionDialog extends JDialog implements PropertyChangeL
      * Action for canceling conflict resolution
      */
     static class HelpAction extends AbstractAction {
-        public HelpAction() {
+        HelpAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Show help information"));
             putValue(Action.NAME, tr("Help"));
             putValue(Action.SMALL_ICON, ImageProvider.get("help"));
@@ -189,7 +189,7 @@ public class ConflictResolutionDialog extends JDialog implements PropertyChangeL
      *
      */
     class ApplyResolutionAction extends AbstractAction implements PropertyChangeListener {
-        public ApplyResolutionAction() {
+        ApplyResolutionAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Apply resolved conflicts and close the dialog"));
             putValue(Action.NAME, tr("Apply Resolution"));
             putValue(Action.SMALL_ICON, ImageProvider.get("dialogs", "conflict"));
@@ -212,8 +212,8 @@ public class ConflictResolutionDialog extends JDialog implements PropertyChangeL
                                 + "are resolved.<br>"
                                 + "Click <strong>{0}</strong> to close anyway.<strong> Already<br>"
                                 + "resolved differences will not be applied.</strong><br>"
-                                + "Click <strong>{1}</strong> to return to resolving conflicts.</html>"
-                                , options[0].toString(), options[1].toString()
+                                + "Click <strong>{1}</strong> to return to resolving conflicts.</html>",
+                                options[0].toString(), options[1].toString()
                         ),
                         tr("Conflict not resolved completely"),
                         JOptionPane.YES_NO_OPTION,
diff --git a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
index 78eca1d..44d6784 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
@@ -315,13 +315,13 @@ public class DeleteFromRelationConfirmationDialog extends JDialog implements Tab
             addColumn(col);
         }
 
-        public RelationMemberTableColumnModel() {
+        RelationMemberTableColumnModel() {
             createColumns();
         }
     }
 
     class OKAction extends AbstractAction {
-        public OKAction() {
+        OKAction() {
             putValue(NAME, tr("OK"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
             putValue(SHORT_DESCRIPTION, tr("Click to close the dialog and remove the object from the relations"));
@@ -335,7 +335,7 @@ public class DeleteFromRelationConfirmationDialog extends JDialog implements Tab
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Click to close the dialog and to abort deleting the objects"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java b/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
index 461ad53..dacda2c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/DialogsPanel.java
@@ -33,7 +33,7 @@ public class DialogsPanel extends JPanel implements Destroyable {
         this.parent = parent;
     }
 
-    public boolean initialized = false; // read only from outside
+    public boolean initialized; // read only from outside
 
     public void initialize(List<ToggleDialog> pAllDialogs) {
         if (initialized)
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
index b245b6a..1242ffa 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
@@ -287,7 +287,7 @@ public class FilterDialog extends ToggleDialog implements DataSetListener {
      * @param primitives list of primitives to check
      * @return List of primitives whose filtering can be affected by change in source primitives
      */
-    private Collection<OsmPrimitive> getAffectedPrimitives(Collection<? extends OsmPrimitive> primitives) {
+    private static Collection<OsmPrimitive> getAffectedPrimitives(Collection<? extends OsmPrimitive> primitives) {
         // Filters can use nested parent/child expression so complete tree is necessary
         Set<OsmPrimitive> result = new HashSet<>();
         Stack<OsmPrimitive> stack = new Stack<>();
@@ -430,7 +430,7 @@ public class FilterDialog extends ToggleDialog implements DataSetListener {
 
     private class HidingFilterAction extends AbstractFilterAction {
 
-        public HidingFilterAction() {
+        HidingFilterAction() {
             putValue(SHORT_DESCRIPTION, tr("Hiding filter"));
             HIDING_FILTER_SHORTCUT.setAccelerator(this);
         }
@@ -450,6 +450,5 @@ public class FilterDialog extends ToggleDialog implements DataSetListener {
                 filterModel.setValueAt(!lastFilter.hiding, filterModel.getFilters().indexOf(lastFilter), FilterTableModel.COL_HIDING);
             }
         }
-
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
index 6b33179..ff6ef42 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
@@ -348,7 +348,7 @@ public class FilterTableModel extends AbstractTableModel {
      * On screen display label
      */
     private static class OSDLabel extends JLabel {
-        public OSDLabel(String text) {
+        OSDLabel(String text) {
             super(text);
             setOpaque(true);
             setForeground(Color.black);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
index 93327f0..354590a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
@@ -130,7 +130,7 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
 
     class DataText {
         private static final String INDENT = "  ";
-        private static final String NL = "\n";
+        private static final char NL = '\n';
 
         private StringBuilder s = new StringBuilder();
 
@@ -363,7 +363,7 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
                 txtMappaint.append(tr("\n\nList of generated Styles:\n"));
                 StyleList sl = elemstyles.get(osm, scale, nc);
                 for (ElemStyle s : sl) {
-                    txtMappaint.append(" * ").append(s).append("\n");
+                    txtMappaint.append(" * ").append(s).append('\n');
                 }
                 txtMappaint.append("\n\n");
             }
@@ -421,7 +421,7 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
         return s.toString();
     }
 
-    private String getSort(StyleSource s) {
+    private static String getSort(StyleSource s) {
         if (s instanceof XmlStyleSource) {
             return tr("xml");
         } else if (s instanceof MapCSSStyleSource) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
index 1a83dae..198bd7e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
@@ -8,8 +8,6 @@ import java.awt.Component;
 import java.awt.GridBagLayout;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
-import java.text.NumberFormat;
-import java.text.ParsePosition;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -199,7 +197,7 @@ public class LatLonDialog extends ExtendedDialog {
             ll = new LatLon(0, 0);
         }
         this.latLonCoordinates = ll;
-        tfLatLon.setText(ll.latToString(CoordinateFormat.getDefaultFormat()) + " " + ll.lonToString(CoordinateFormat.getDefaultFormat()));
+        tfLatLon.setText(ll.latToString(CoordinateFormat.getDefaultFormat()) + ' ' + ll.lonToString(CoordinateFormat.getDefaultFormat()));
         EastNorth en = Main.getProjection().latlon2eastNorth(ll);
         tfEastNorth.setText(en.east()+" "+en.north());
         setOkEnabled(true);
@@ -234,31 +232,6 @@ public class LatLonDialog extends ExtendedDialog {
         tf.setBackground(UIManager.getColor("TextField.background"));
     }
 
-    protected Double parseDoubleFromUserInput(String input) {
-        if (input == null) return null;
-        // remove white space and an optional degree symbol
-        //
-        input = input.trim();
-        input = input.replaceAll(DEG, "");
-
-        // try to parse using the current locale
-        //
-        NumberFormat f = NumberFormat.getNumberInstance();
-        Number n = null;
-        ParsePosition pp = new ParsePosition(0);
-        n = f.parse(input, pp);
-        if (pp.getErrorIndex() >= 0 || pp.getIndex() < input.length()) {
-            // fall back - try to parse with the english locale
-            //
-            pp = new ParsePosition(0);
-            f = NumberFormat.getNumberInstance(Locale.ENGLISH);
-            n = f.parse(input, pp);
-            if (pp.getErrorIndex() >= 0 || pp.getIndex() < input.length())
-                return null;
-        }
-        return n == null ? null : n.doubleValue();
-    }
-
     protected void parseLatLonUserInput() {
         LatLon latLon;
         try {
@@ -306,8 +279,14 @@ public class LatLonDialog extends ExtendedDialog {
 
     @Override
     public void setVisible(boolean visible) {
+        final String preferenceKey = getClass().getName() + ".geometry";
         if (visible) {
-            WindowGeometry.centerInWindow(Main.parent, getSize()).applySafe(this);
+            new WindowGeometry(
+                    preferenceKey,
+                    WindowGeometry.centerInWindow(getParent(), getSize())
+            ).applySafe(this);
+        } else {
+            new WindowGeometry(this).remember(preferenceKey);
         }
         super.setVisible(visible);
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
index 5a97dd3..4543e47 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
@@ -124,7 +124,7 @@ public class LayerListDialog extends ToggleDialog {
     private final class ToggleLayerIndexVisibility extends AbstractAction {
         private int layerIndex = -1;
 
-        public ToggleLayerIndexVisibility(int layerIndex) {
+        ToggleLayerIndexVisibility(int layerIndex) {
             this.layerIndex = layerIndex;
         }
 
@@ -863,14 +863,7 @@ public class LayerListDialog extends ToggleDialog {
                 if (getModel().getSelectedLayers().isEmpty()) {
                     setEnabled(false);
                 } else  if (getModel().getSelectedLayers().size() > 1) {
-                    Layer firstLayer = getModel().getSelectedLayers().get(0);
-                    for (Layer l: getModel().getSelectedLayers()) {
-                        if (l != firstLayer && (!l.isMergable(firstLayer) || !firstLayer.isMergable(l))) {
-                            setEnabled(false);
-                            return;
-                        }
-                    }
-                    setEnabled(true);
+                    setEnabled(supportLayers(getModel().getSelectedLayers()));
                 } else {
                     Layer selectedLayer = getModel().getSelectedLayers().get(0);
                     List<Layer> targets = getModel().getPossibleMergeTargets(selectedLayer);
@@ -886,12 +879,13 @@ public class LayerListDialog extends ToggleDialog {
 
         @Override
         public boolean supportLayers(List<Layer> layers) {
-            for (Layer l : layers) {
-                if (!(l instanceof OsmDataLayer)) {
-                    return false;
-                }
+            if (layers.size() < 1) {
+                return false;
+            } else {
+                final Layer firstLayer = layers.get(0);
+                final List<Layer> remainingLayers = layers.subList(1, layers.size());
+                return getModel().getPossibleMergeTargets(firstLayer).containsAll(remainingLayers);
             }
-            return true;
         }
 
         @Override
@@ -965,12 +959,6 @@ public class LayerListDialog extends ToggleDialog {
             }
         }
 
-        protected boolean isActiveLayer(Layer layer) {
-            if (!Main.isDisplayingMapView())
-                return false;
-            return Main.map.mapView.getActiveLayer() == layer;
-        }
-
         @Override
         public void updateEnabledState() {
             if (layer == null) {
@@ -986,7 +974,7 @@ public class LayerListDialog extends ToggleDialog {
     }
 
     private static class ActiveLayerCheckBox extends JCheckBox {
-        public ActiveLayerCheckBox() {
+        ActiveLayerCheckBox() {
             setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
             ImageIcon blank = ImageProvider.get("dialogs/layerlist", "blank");
             ImageIcon active = ImageProvider.get("dialogs/layerlist", "active");
@@ -1006,7 +994,7 @@ public class LayerListDialog extends ToggleDialog {
         /**
          * Constructs a new {@code LayerVisibleCheckBox}.
          */
-        public LayerVisibleCheckBox() {
+        LayerVisibleCheckBox() {
             setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
             iconEye = ImageProvider.get("dialogs/layerlist", "eye");
             iconEyeTranslucent = ImageProvider.get("dialogs/layerlist", "eye-translucent");
@@ -1042,7 +1030,7 @@ public class LayerListDialog extends ToggleDialog {
         /**
          * Constructs a new {@code ActiveLayerCellRenderer}.
          */
-        public ActiveLayerCellRenderer() {
+        ActiveLayerCellRenderer() {
             cb = new ActiveLayerCheckBox();
         }
 
@@ -1061,7 +1049,7 @@ public class LayerListDialog extends ToggleDialog {
         /**
          * Constructs a new {@code LayerVisibleCellRenderer}.
          */
-        public LayerVisibleCellRenderer() {
+        LayerVisibleCellRenderer() {
             this.cb = new LayerVisibleCheckBox();
         }
 
@@ -1077,7 +1065,7 @@ public class LayerListDialog extends ToggleDialog {
     private static class LayerVisibleCellEditor extends DefaultCellEditor {
         private final LayerVisibleCheckBox cb;
 
-        public LayerVisibleCellEditor(LayerVisibleCheckBox cb) {
+        LayerVisibleCellEditor(LayerVisibleCheckBox cb) {
             super(cb);
             this.cb = cb;
         }
@@ -1137,7 +1125,7 @@ public class LayerListDialog extends ToggleDialog {
     }
 
     private static class LayerNameCellEditor extends DefaultCellEditor {
-        public LayerNameCellEditor(DisableShortcutsOnFocusGainedTextField tf) {
+        LayerNameCellEditor(DisableShortcutsOnFocusGainedTextField tf) {
             super(tf);
         }
 
@@ -1153,7 +1141,7 @@ public class LayerListDialog extends ToggleDialog {
         @Override
         public void showMenu(MouseEvent evt) {
             Layer layer = getModel().getLayer(layerList.getSelectedRow());
-            menu = new LayerListPopup(getModel().getSelectedLayers(), layer);
+            menu = new LayerListPopup(getModel().getSelectedLayers());
             super.showMenu(evt);
         }
     }
@@ -1162,7 +1150,7 @@ public class LayerListDialog extends ToggleDialog {
      * The action to move up the currently selected entries in the list.
      */
     class MoveUpAction extends AbstractAction implements  IEnabledStateUpdating{
-        public MoveUpAction() {
+        MoveUpAction() {
             putValue(NAME, tr("Move up"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "up"));
             putValue(SHORT_DESCRIPTION, tr("Move the selected layer one row up."));
@@ -1184,7 +1172,7 @@ public class LayerListDialog extends ToggleDialog {
      * The action to move down the currently selected entries in the list.
      */
     class MoveDownAction extends AbstractAction implements IEnabledStateUpdating {
-        public MoveDownAction() {
+        MoveDownAction() {
             putValue(NAME, tr("Move down"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "down"));
             putValue(SHORT_DESCRIPTION, tr("Move the selected layer one row down."));
@@ -1503,9 +1491,10 @@ public class LayerListDialog extends ToggleDialog {
          */
         public List<Layer> getPossibleMergeTargets(Layer source) {
             List<Layer> targets = new ArrayList<>();
-            if (source == null)
+            if (source == null || !Main.isDisplayingMapView()) {
                 return targets;
-            for (Layer target : getLayers()) {
+            }
+            for (Layer target : Main.map.mapView.getAllLayersAsList()) {
                 if (source == target) {
                     continue;
                 }
@@ -1670,7 +1659,7 @@ public class LayerListDialog extends ToggleDialog {
     }
 
     static class LayerList extends JTable {
-        public LayerList(TableModel dataModel) {
+        LayerList(TableModel dataModel) {
             super(dataModel);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java b/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
index 61ff74b..429b80d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
@@ -66,7 +66,7 @@ public class LayerListPopup extends JPopupMenu {
         }
     }
 
-    public LayerListPopup(List<Layer> selectedLayers, final Layer layer) {
+    public LayerListPopup(List<Layer> selectedLayers) {
 
         List<Action> actions;
         if (selectedLayers.size() == 1) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
index bf61a53..1a3d2e8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
@@ -295,7 +295,7 @@ public class MapPaintDialog extends ToggleDialog {
         /**
          * Constructs a new {@code MyCheckBoxRenderer}.
          */
-        public MyCheckBoxRenderer() {
+        MyCheckBoxRenderer() {
             setHorizontalAlignment(SwingConstants.CENTER);
             setVerticalAlignment(SwingConstants.CENTER);
         }
@@ -492,7 +492,7 @@ public class MapPaintDialog extends ToggleDialog {
             private boolean canceled;
             private boolean error;
 
-            public SaveToFileTask(StyleSource s, File file) {
+            SaveToFileTask(StyleSource s, File file) {
                 super(tr("Reloading style sources"));
                 this.s = s;
                 this.file = file;
@@ -535,7 +535,7 @@ public class MapPaintDialog extends ToggleDialog {
                             SourceEntry se = new SourceEntry(s);
                             se.url = file.getPath();
                             MapPaintStyles.addStyle(se);
-                            tblStyles.getSelectionModel().setSelectionInterval(model.getRowCount() - 1 , model.getRowCount() - 1);
+                            tblStyles.getSelectionModel().setSelectionInterval(model.getRowCount() - 1, model.getRowCount() - 1);
                             model.ensureSelectedIsVisible();
                         }
                     }
@@ -654,7 +654,7 @@ public class MapPaintDialog extends ToggleDialog {
                 try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
                     String line;
                     while ((line = reader.readLine()) != null) {
-                        txtSource.append(line + "\n");
+                        txtSource.append(line + '\n');
                     }
                 } finally {
                     s.closeSourceInputStream(is);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
index 7b4018e..667a18e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
@@ -267,7 +267,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code NoteTableModel}.
          */
-        public NoteTableModel() {
+        NoteTableModel() {
             data = new ArrayList<>();
         }
 
@@ -302,7 +302,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code AddCommentAction}.
          */
-        public AddCommentAction() {
+        AddCommentAction() {
             putValue(SHORT_DESCRIPTION, tr("Add comment"));
             putValue(NAME, tr("Comment"));
             putValue(SMALL_ICON, ICON_COMMENT);
@@ -334,7 +334,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code CloseAction}.
          */
-        public CloseAction() {
+        CloseAction() {
             putValue(SHORT_DESCRIPTION, tr("Close note"));
             putValue(NAME, tr("Close"));
             putValue(SMALL_ICON, ICON_CLOSED);
@@ -359,7 +359,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code NewAction}.
          */
-        public NewAction() {
+        NewAction() {
             putValue(SHORT_DESCRIPTION, tr("Create a new note"));
             putValue(NAME, tr("Create"));
             putValue(SMALL_ICON, ICON_NEW);
@@ -379,7 +379,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code ReopenAction}.
          */
-        public ReopenAction() {
+        ReopenAction() {
             putValue(SHORT_DESCRIPTION, tr("Reopen note"));
             putValue(NAME, tr("Reopen"));
             putValue(SMALL_ICON, ICON_OPEN);
@@ -405,7 +405,7 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         /**
          * Constructs a new {@code SortAction}.
          */
-        public SortAction() {
+        SortAction() {
             putValue(SHORT_DESCRIPTION, tr("Sort notes"));
             putValue(NAME, tr("Sort"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "sort"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
index 8f4eb02..a299979 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
@@ -288,7 +288,7 @@ public class RelationListDialog extends ToggleDialog implements DataSetListener
                 try {
                     f.setBackground(UIManager.getColor("TextField.background"));
                     f.setToolTipText(tr("Relation list filter"));
-                    model.setFilter(SearchCompiler.compile(filter.getText(), false, false));
+                    model.setFilter(SearchCompiler.compile(filter.getText()));
                 } catch (SearchCompiler.ParseError ex) {
                     f.setBackground(new Color(255, 224, 224));
                     f.setToolTipText(ex.getMessage());
@@ -316,7 +316,7 @@ public class RelationListDialog extends ToggleDialog implements DataSetListener
 
     class MouseEventHandler extends PopupMenuLauncher {
 
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(popupMenu);
         }
 
@@ -351,7 +351,7 @@ public class RelationListDialog extends ToggleDialog implements DataSetListener
      *
      */
     static class NewAction extends AbstractAction implements LayerChangeListener{
-        public NewAction() {
+        NewAction() {
             putValue(SHORT_DESCRIPTION, tr("Create a new relation"));
             putValue(NAME, tr("New"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "addrelation"));
@@ -397,7 +397,7 @@ public class RelationListDialog extends ToggleDialog implements DataSetListener
         private DefaultListSelectionModel selectionModel;
         private transient SearchCompiler.Match filter;
 
-        public RelationListModel(DefaultListSelectionModel selectionModel) {
+        RelationListModel(DefaultListSelectionModel selectionModel) {
             this.selectionModel = selectionModel;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
index 74fc754..8cd8fca 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
@@ -199,7 +199,7 @@ public class SelectionListDialog extends ToggleDialog  {
         private final HighlightHelper helper = new HighlightHelper();
         private boolean highlightEnabled = Main.pref.getBoolean("draw.target-highlight", true);
 
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(popupMenu);
         }
 
@@ -292,7 +292,7 @@ public class SelectionListDialog extends ToggleDialog  {
         /**
          * Constructs a new {@code SearchAction}.
          */
-        public SearchAction() {
+        SearchAction() {
             putValue(NAME, tr("Search"));
             putValue(SHORT_DESCRIPTION,   tr("Search for objects"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
@@ -323,7 +323,7 @@ public class SelectionListDialog extends ToggleDialog  {
         /**
          * Constructs a new {@code SelectAction}.
          */
-        public SelectAction() {
+        SelectAction() {
             updateEnabledState();
         }
 
@@ -354,7 +354,7 @@ public class SelectionListDialog extends ToggleDialog  {
         /**
          * Constructs a new {@code ShowHistoryAction}.
          */
-        public ShowHistoryAction() {
+        ShowHistoryAction() {
             putValue(NAME, tr("History"));
             putValue(SHORT_DESCRIPTION, tr("Display the history of the selected objects."));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "history"));
@@ -394,7 +394,7 @@ public class SelectionListDialog extends ToggleDialog  {
      */
     class ZoomToJOSMSelectionAction extends AbstractAction implements ListDataListener {
 
-        public ZoomToJOSMSelectionAction() {
+        ZoomToJOSMSelectionAction() {
             putValue(NAME, tr("Zoom to selection"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to selection"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/autoscale", "selection"));
@@ -435,7 +435,7 @@ public class SelectionListDialog extends ToggleDialog  {
         /**
          * Constructs a new {@code ZoomToListSelection}.
          */
-        public ZoomToListSelection() {
+        ZoomToListSelection() {
             putValue(NAME, tr("Zoom to selected element(s)"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to selected element(s)"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/autoscale", "selection"));
@@ -485,7 +485,7 @@ public class SelectionListDialog extends ToggleDialog  {
          * Constructor
          * @param selectionModel the selection model used in the list
          */
-        public SelectionListModel(DefaultListSelectionModel selectionModel) {
+        SelectionListModel(DefaultListSelectionModel selectionModel) {
             this.selectionModel = selectionModel;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
index c9bfe3c..a842d62 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
@@ -351,7 +351,6 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
         unfurlDialog();
     }
 
-
     /**
      * Hides the dialog
      */
@@ -360,7 +359,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
         this.setVisible(false);
         windowMenuItem.setState(false);
         setIsShowing(false);
-        toggleAction.putValue("selected", false);
+        toggleAction.putValue("selected", Boolean.FALSE);
     }
 
     /**
@@ -609,7 +608,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             /**
              * Constructs a new {@code DialogPopupMenu}.
              */
-            public DialogPopupMenu() {
+            DialogPopupMenu() {
                 alwaysShown.setSelected(buttonHiding == ButtonHidingType.ALWAYS_SHOWN);
                 dynamic.setSelected(buttonHiding == ButtonHidingType.DYNAMIC);
                 alwaysHidden.setSelected(buttonHiding == ButtonHidingType.ALWAYS_HIDDEN);
@@ -635,7 +634,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             /**
              * Constructs a new {@code MouseEventHandler}.
              */
-            public MouseEventHandler() {
+            MouseEventHandler() {
                 super(popupMenu);
             }
 
@@ -659,7 +658,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
      *
      */
     private class DetachedDialog extends JDialog {
-        public DetachedDialog() {
+        DetachedDialog() {
             super(JOptionPane.getFrameForComponent(Main.parent));
             getContentPane().add(ToggleDialog.this);
             addWindowListener(new WindowAdapter() {
@@ -833,21 +832,15 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
         return button;
     }
 
-    /***
+    /*
      * The following methods are intended to be overridden, in order to customize
      * the toggle dialog behavior.
-     **/
-
-    /**
-     * Change the Geometry of the detached dialog to better fit the content.
      */
-    protected Rectangle getDetachedGeometry(Rectangle last) {
-        return last;
-    }
 
     /**
-     * Default size of the detached dialog.
+     * Returns the default size of the detached dialog.
      * Override this method to customize the initial dialog size.
+     * @return the default size of the detached dialog
      */
     protected Dimension getDefaultDetachedSize() {
         return new Dimension(dialogsPanel.getWidth(), preferredHeight);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
index 7eab854..6948a4d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
@@ -136,7 +136,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
             @Override
             public void run() {
                 if (model.getRowCount() != 0) {
-                    setTitle(trn("{0} Author", "{0} Authors", model.getRowCount() , model.getRowCount()));
+                    setTitle(trn("{0} Author", "{0} Authors", model.getRowCount(), model.getRowCount()));
                 } else {
                     setTitle(tr("Authors"));
                 }
@@ -155,7 +155,11 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
     }
 
     class SelectUsersPrimitivesAction extends AbstractAction implements ListSelectionListener{
-        public SelectUsersPrimitivesAction() {
+
+        /**
+         * Constructs a new {@code SelectUsersPrimitivesAction}.
+         */
+        SelectUsersPrimitivesAction() {
             putValue(NAME, tr("Select"));
             putValue(SHORT_DESCRIPTION, tr("Select objects submitted by this user"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
@@ -188,7 +192,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
      */
     class ShowUserInfoAction extends AbstractInfoAction implements ListSelectionListener {
 
-        public ShowUserInfoAction() {
+        ShowUserInfoAction() {
             super(false);
             putValue(NAME, tr("Show info"));
             putValue(SHORT_DESCRIPTION, tr("Launches a browser with information about the user"));
@@ -221,7 +225,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
         protected String createInfoUrl(Object infoObject) {
             if (infoObject instanceof User) {
                 User user = (User) infoObject;
-                return Main.getBaseUserUrl() + "/" + Utils.encodeUrl(user.getName()).replaceAll("\\+", "%20");
+                return Main.getBaseUserUrl() + '/' + Utils.encodeUrl(user.getName()).replaceAll("\\+", "%20");
             } else {
                 return null;
             }
@@ -285,7 +289,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
     static class UserTableModel extends DefaultTableModel {
         private transient List<UserInfo> data;
 
-        public UserTableModel() {
+        UserTableModel() {
             setColumnIdentifiers(new String[]{tr("Author"), tr("# Objects"), "%"});
             data = new ArrayList<>();
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
index e976497..63e9df2 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
@@ -83,7 +83,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
     private final transient PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
 
     /** Last selected element */
-    private DefaultMutableTreeNode lastSelectedNode = null;
+    private DefaultMutableTreeNode lastSelectedNode;
 
     private transient OsmDataLayer linkedLayer;
 
@@ -473,7 +473,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
      */
     class MouseEventHandler extends PopupMenuLauncher {
 
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(popupMenu);
         }
 
@@ -588,7 +588,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
         private Collection<TestError> testErrors;
         private boolean canceled;
 
-        public FixTask(Collection<TestError> testErrors) {
+        FixTask(Collection<TestError> testErrors) {
             super(tr("Fixing errors ..."), false /* don't ignore exceptions */);
             this.testErrors = testErrors == null ? new ArrayList<TestError>() : testErrors;
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
index a92bb5d..79d2b19 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
@@ -348,7 +348,7 @@ public class ChangesetCacheManager extends JFrame {
      * the cancel / close action
      */
     static class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Close"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close the dialog"));
@@ -368,7 +368,7 @@ public class ChangesetCacheManager extends JFrame {
      * The action to query and download changesets
      */
     class QueryAction extends AbstractAction {
-        public QueryAction() {
+        QueryAction() {
             putValue(NAME, tr("Query"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
             putValue(SHORT_DESCRIPTION, tr("Launch the dialog for querying changesets"));
@@ -399,7 +399,7 @@ public class ChangesetCacheManager extends JFrame {
      *
      */
     class RemoveFromCacheAction extends AbstractAction implements ListSelectionListener{
-        public RemoveFromCacheAction() {
+        RemoveFromCacheAction() {
             putValue(NAME, tr("Remove from cache"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(SHORT_DESCRIPTION, tr("Remove the selected changesets from the local cache"));
@@ -419,7 +419,6 @@ public class ChangesetCacheManager extends JFrame {
         @Override
         public void valueChanged(ListSelectionEvent e) {
             updateEnabledState();
-
         }
     }
 
@@ -428,7 +427,7 @@ public class ChangesetCacheManager extends JFrame {
      *
      */
     class CloseSelectedChangesetsAction extends AbstractAction implements ListSelectionListener{
-        public CloseSelectedChangesetsAction() {
+        CloseSelectedChangesetsAction() {
             putValue(NAME, tr("Close"));
             putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
             putValue(SHORT_DESCRIPTION, tr("Close the selected changesets"));
@@ -470,7 +469,7 @@ public class ChangesetCacheManager extends JFrame {
      *
      */
     class DownloadSelectedChangesetsAction extends AbstractAction implements ListSelectionListener{
-        public DownloadSelectedChangesetsAction() {
+        DownloadSelectedChangesetsAction() {
             putValue(NAME, tr("Update changeset"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/changeset", "updatechangeset"));
             putValue(SHORT_DESCRIPTION, tr("Updates the selected changesets with current data from the OSM server"));
@@ -499,7 +498,7 @@ public class ChangesetCacheManager extends JFrame {
      *
      */
     class DownloadSelectedChangesetContentAction extends AbstractAction implements ListSelectionListener{
-        public DownloadSelectedChangesetContentAction() {
+        DownloadSelectedChangesetContentAction() {
             putValue(NAME, tr("Download changeset content"));
             putValue(SMALL_ICON, DOWNLOAD_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Download the content of the selected changesets from the server"));
@@ -537,7 +536,7 @@ public class ChangesetCacheManager extends JFrame {
     }
 
     class DownloadMyChangesets extends AbstractAction {
-        public DownloadMyChangesets() {
+        DownloadMyChangesets() {
             putValue(NAME, tr("My changesets"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/changeset", "downloadchangeset"));
             putValue(SHORT_DESCRIPTION, tr("Download my changesets from the OSM server (max. 100 changesets)"));
@@ -577,7 +576,7 @@ public class ChangesetCacheManager extends JFrame {
 
     class MouseEventHandler extends PopupMenuLauncher {
 
-        public MouseEventHandler() {
+        MouseEventHandler() {
             super(new ChangesetTablePopupMenu());
         }
 
@@ -590,7 +589,7 @@ public class ChangesetCacheManager extends JFrame {
     }
 
     class ChangesetTablePopupMenu extends JPopupMenu {
-        public ChangesetTablePopupMenu() {
+        ChangesetTablePopupMenu() {
             add(actRemoveFromCacheAction);
             add(actCloseSelectedChangesetsAction);
             add(actDownloadSelectedChangesets);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
index d674364..5917a77 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
@@ -191,7 +191,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
      *
      */
     class DownloadChangesetContentAction extends AbstractAction{
-        public DownloadChangesetContentAction() {
+        DownloadChangesetContentAction() {
             putValue(NAME, tr("Download content"));
             putValue(SMALL_ICON, ChangesetCacheManager.DOWNLOAD_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server"));
@@ -224,7 +224,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
     }
 
     class ChangesetContentTablePopupMenu extends JPopupMenu {
-        public ChangesetContentTablePopupMenu() {
+        ChangesetContentTablePopupMenu() {
             add(actDownloadContentAction);
             add(actShowHistory);
             add(new JSeparator());
@@ -268,7 +268,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
             }
         }
 
-        public ShowHistoryAction() {
+        ShowHistoryAction() {
             putValue(NAME, tr("Show history"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "history"));
             putValue(SHORT_DESCRIPTION, tr("Download and show the history of the selected objects"));
@@ -318,7 +318,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
 
     class SelectInCurrentLayerAction extends AbstractAction implements ListSelectionListener, EditLayerChangeListener{
 
-        public SelectInCurrentLayerAction() {
+        SelectInCurrentLayerAction() {
             putValue(NAME, tr("Select in layer"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
             putValue(SHORT_DESCRIPTION, tr("Select the corresponding primitives in the current data layer"));
@@ -368,7 +368,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
 
     class ZoomInCurrentLayerAction extends AbstractAction implements ListSelectionListener, EditLayerChangeListener{
 
-        public ZoomInCurrentLayerAction() {
+        ZoomInCurrentLayerAction() {
             putValue(NAME, tr("Zoom to in layer"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/autoscale", "selection"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to the corresponding objects in the current data layer"));
@@ -432,7 +432,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
 
         }
 
-        public HeaderPanel() {
+        HeaderPanel() {
             build();
         }
 
@@ -442,7 +442,7 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
         }
 
         private class DownloadAction extends AbstractAction {
-            public DownloadAction() {
+            DownloadAction() {
                 putValue(NAME, tr("Download now"));
                 putValue(SHORT_DESCRIPTION, tr("Download the changeset content"));
                 putValue(SMALL_ICON, ChangesetCacheManager.DOWNLOAD_CONTENT_ICON);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
index dd62ad8..6255305 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
@@ -142,12 +142,12 @@ public class ChangesetContentTableModel extends AbstractTableModel {
         private final ChangesetModificationType modificationType;
         private final HistoryOsmPrimitive primitive;
 
-        public ChangesetContentEntry(ChangesetModificationType modificationType, HistoryOsmPrimitive primitive) {
+        ChangesetContentEntry(ChangesetModificationType modificationType, HistoryOsmPrimitive primitive) {
             this.modificationType = modificationType;
             this.primitive = primitive;
         }
 
-        public ChangesetContentEntry(ChangesetDataSetEntry entry) {
+        ChangesetContentEntry(ChangesetDataSetEntry entry) {
             this(entry.getModificationType(), entry.getPrimitive());
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
index efc5c13..8e59764 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
@@ -15,7 +15,6 @@ import java.awt.event.ComponentEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.text.DateFormat;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
@@ -63,7 +62,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
     private final SelectInCurrentLayerAction     actSelectInCurrentLayer     = new SelectInCurrentLayerAction();
     private final ZoomInCurrentLayerAction       actZoomInCurrentLayerAction = new ZoomInCurrentLayerAction();
 
-    private transient Changeset current = null;
+    private transient Changeset current;
 
     protected JPanel buildActionButtonPanel() {
         JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
@@ -267,7 +266,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
      * The action for removing the currently selected changeset from the changeset cache
      */
     class RemoveFromCacheAction extends AbstractAction {
-        public RemoveFromCacheAction() {
+        RemoveFromCacheAction() {
             putValue(NAME, tr("Remove from cache"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(SHORT_DESCRIPTION, tr("Remove the changeset in the detail view panel from the local cache"));
@@ -290,7 +289,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
      *
      */
     class DownloadChangesetContentAction extends AbstractAction {
-        public DownloadChangesetContentAction() {
+        DownloadChangesetContentAction() {
             putValue(NAME, tr("Download content"));
             putValue(SMALL_ICON, ChangesetCacheManager.DOWNLOAD_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Download the changeset content from the OSM server"));
@@ -327,7 +326,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
      *
      */
     class UpdateChangesetAction extends AbstractAction{
-        public UpdateChangesetAction() {
+        UpdateChangesetAction() {
             putValue(NAME, tr("Update changeset"));
             putValue(SMALL_ICON, ChangesetCacheManager.UPDATE_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Update the changeset from the OSM server"));
@@ -356,14 +355,14 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
      */
     class SelectInCurrentLayerAction extends AbstractAction implements EditLayerChangeListener{
 
-        public SelectInCurrentLayerAction() {
+        SelectInCurrentLayerAction() {
             putValue(NAME, tr("Select in layer"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
             putValue(SHORT_DESCRIPTION, tr("Select the primitives in the content of this changeset in the current data layer"));
             updateEnabledState();
         }
 
-        protected void alertNoPrimitivesToSelect(Collection<OsmPrimitive> primitives) {
+        protected void alertNoPrimitivesToSelect() {
             HelpAwareOptionPane.showOptionDialog(
                     ChangesetDetailPanel.this,
                     tr("<html>None of the objects in the content of changeset {0} is available in the current<br>"
@@ -390,7 +389,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
                 }
             }
             if (target.isEmpty()) {
-                alertNoPrimitivesToSelect(target);
+                alertNoPrimitivesToSelect();
                 return;
             }
             layer.data.setSelected(target);
@@ -417,7 +416,7 @@ public class ChangesetDetailPanel extends JPanel implements PropertyChangeListen
      */
     class ZoomInCurrentLayerAction extends AbstractAction implements EditLayerChangeListener{
 
-        public ZoomInCurrentLayerAction() {
+        ZoomInCurrentLayerAction() {
             putValue(NAME, tr("Zoom to in layer"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/autoscale", "selection"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to the objects in the content of this changeset in the current data layer"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
index bde8f38..1d20e70 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
@@ -39,7 +39,7 @@ public class ChangesetDiscussionPanel extends JPanel implements PropertyChangeLi
 
     private JTable table;
 
-    private transient Changeset current = null;
+    private transient Changeset current;
 
     protected JPanel buildActionButtonPanel() {
         JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
@@ -59,7 +59,7 @@ public class ChangesetDiscussionPanel extends JPanel implements PropertyChangeLi
      * Updates the current changeset discussion from the OSM server
      */
     class UpdateChangesetDiscussionAction extends AbstractAction {
-        public UpdateChangesetDiscussionAction() {
+        UpdateChangesetDiscussionAction() {
             putValue(NAME, tr("Update changeset discussion"));
             putValue(SMALL_ICON, ChangesetCacheManager.UPDATE_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Update the changeset discussion from the OSM server"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetTagsPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetTagsPanel.java
index 4f540ec..cd3faa1 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetTagsPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetTagsPanel.java
@@ -37,14 +37,6 @@ public class ChangesetTagsPanel extends JPanel implements PropertyChangeListener
         build();
     }
 
-    protected void init(Changeset cs) {
-        if (cs == null) {
-            model.clear();
-            return;
-        }
-        model.initFromTags(cs.getKeys());
-    }
-
     /* ---------------------------------------------------------------------------- */
     /* interface PropertyChangeListener                                             */
     /* ---------------------------------------------------------------------------- */
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java
index 65d58b0..34ce6d9 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/SingleChangesetDownloadPanel.java
@@ -77,7 +77,7 @@ public class SingleChangesetDownloadPanel extends JPanel {
      */
     class DownloadAction extends AbstractAction implements DocumentListener{
 
-        public DownloadAction() {
+        DownloadAction() {
             putValue(SMALL_ICON, ChangesetCacheManager.DOWNLOAD_CONTENT_ICON);
             putValue(SHORT_DESCRIPTION, tr("Download the changeset with the specified id, including the changeset content"));
             updateEnabledState();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
index a1e1d57..c65550b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
@@ -328,7 +328,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             bgRestrictions.add(rbOpenOnly);
         }
 
-        public OpenAndCloseStateRestrictionPanel() {
+        OpenAndCloseStateRestrictionPanel() {
             build();
         }
 
@@ -489,7 +489,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             bgUserRestrictions.add(rbRestrictToUserName);
         }
 
-        public UserRestrictionPanel() {
+        UserRestrictionPanel() {
             build();
         }
 
@@ -806,7 +806,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             rbClosedAfter.setSelected(true);
         }
 
-        public TimeRestrictionPanel() {
+        TimeRestrictionPanel() {
             build();
         }
 
@@ -927,7 +927,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
     }
 
     private static class BBoxRestrictionPanel extends BoundingBoxSelectionPanel {
-        public BBoxRestrictionPanel() {
+        BBoxRestrictionPanel() {
             setBorder(BorderFactory.createCompoundBorder(
                     BorderFactory.createEmptyBorder(3, 3, 3, 3),
                     BorderFactory.createCompoundBorder(
@@ -971,7 +971,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             return new UidInputFieldValidator(tc);
         }
 
-        public UidInputFieldValidator(JTextComponent tc) {
+        UidInputFieldValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -1018,7 +1018,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             return new UserNameInputValidator(tc);
         }
 
-        public UserNameInputValidator(JTextComponent tc) {
+        UserNameInputValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -1049,7 +1049,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             return new DateValidator(tc);
         }
 
-        public DateValidator(JTextComponent tc) {
+        DateValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -1116,7 +1116,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
             return new TimeValidator(tc);
         }
 
-        public TimeValidator(JTextComponent tc) {
+        TimeValidator(JTextComponent tc) {
             super(tc);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
index 1ffa6c5..bce9ec3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
@@ -34,7 +34,7 @@ public class BasicChangesetQueryPanel extends JPanel {
     /**
      * Enumeration of basic, predefined queries
      */
-    private static enum BasicQuery {
+    private enum BasicQuery {
         MOST_RECENT_CHANGESETS,
         MY_OPEN_CHANGESETS,
         CHANGESETS_IN_MAP_VIEW;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
index 04a66de..ab7a0f4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
@@ -157,7 +157,7 @@ public class ChangesetQueryDialog extends JDialog {
     }
 
     class QueryAction extends AbstractAction {
-        public QueryAction() {
+        QueryAction() {
             putValue(NAME, tr("Query"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
             putValue(SHORT_DESCRIPTION, tr("Query and download changesets"));
@@ -206,7 +206,7 @@ public class ChangesetQueryDialog extends JDialog {
 
     class CancelAction extends AbstractAction {
 
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close the dialog and abort querying of changesets"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java
index 8c8442e..5889db5 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java
@@ -1,15 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs.properties;
 
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.tagging.PresetHandler;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
-import org.openstreetmap.josm.gui.tagging.PresetLabel;
-import org.openstreetmap.josm.tools.GBC;
-
-import javax.swing.JLabel;
-import javax.swing.JPanel;
 import java.awt.Dimension;
 import java.awt.GridBagLayout;
 import java.awt.event.MouseAdapter;
@@ -17,6 +8,16 @@ import java.awt.event.MouseEvent;
 import java.util.Collection;
 import java.util.Map;
 
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetLabel;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
+import org.openstreetmap.josm.tools.GBC;
+
 /**
  * A list of matching presets for a set of tags.
  */
@@ -33,7 +34,8 @@ public class PresetListPanel extends JPanel {
      * Updates the preset list based on the {@code tags} and {@code types},
      * and associates an interaction with (matching) presets via {@code presetHandler}.
      */
-    public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags, final PresetHandler presetHandler) {
+    public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags,
+            final TaggingPresetHandler presetHandler) {
 
         removeAll();
         if (types.isEmpty()) {
@@ -42,7 +44,7 @@ public class PresetListPanel extends JPanel {
         }
 
         for (final TaggingPreset t : TaggingPreset.getMatchingPresets(types, tags, true)) {
-            final JLabel lbl = new PresetLabel(t);
+            final JLabel lbl = new TaggingPresetLabel(t);
             lbl.addMouseListener(new MouseAdapter() {
                 @Override
                 public void mouseClicked(MouseEvent e) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
index 62b7c99..6142c9f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
@@ -55,7 +55,6 @@ import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembers
 import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
 import org.openstreetmap.josm.actions.relation.SelectMembersAction;
 import org.openstreetmap.josm.actions.relation.SelectRelationAction;
-import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -85,9 +84,9 @@ import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.PresetHandler;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.HighlightHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
@@ -215,7 +214,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
     private final JLabel selectSth = new JLabel("<html><p>"
             + tr("Select objects for which to change tags.") + "</p></html>");
 
-    private final transient PresetHandler presetHandler = new PresetHandler() {
+    private final transient TaggingPresetHandler presetHandler = new TaggingPresetHandler() {
         @Override public void updateTags(List<Tag> tags) {
             Command command = TaggingPreset.createCommand(getSelection(), tags);
             if (command != null) Main.main.undoRedo.add(command);
@@ -821,8 +820,8 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
         private Set<OsmPrimitive> members = new HashSet<>();
         private List<Integer> position = new ArrayList<>();
         private Iterable<OsmPrimitive> selection;
-        private String positionString = null;
-        private String roleString = null;
+        private String positionString;
+        private String roleString;
 
         MemberInfo(Iterable<OsmPrimitive> selection) {
             this.selection = selection;
@@ -893,7 +892,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
 
         private static final String DELETE_FROM_RELATION_PREF = "delete_from_relation";
 
-        public DeleteAction() {
+        DeleteAction() {
             super(tr("Delete"), /* ICON() */ "dialogs/delete", tr("Delete the selected key in all objects"),
                     Shortcut.registerShortcut("properties:delete", tr("Delete Tags"), KeyEvent.VK_D,
                             Shortcut.ALT_CTRL_SHIFT), false);
@@ -1001,7 +1000,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
      * Action handling add button press in properties dialog.
      */
     class AddAction extends JosmAction {
-        public AddAction() {
+        AddAction() {
             super(tr("Add"), /* ICON() */ "dialogs/add", tr("Add a new key/value pair to all objects"),
                     Shortcut.registerShortcut("properties:add", tr("Add Tag"), KeyEvent.VK_A,
                             Shortcut.ALT), false);
@@ -1018,7 +1017,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
      * Action handling edit button press in properties dialog.
      */
     class EditAction extends JosmAction implements ListSelectionListener {
-        public EditAction() {
+        EditAction() {
             super(tr("Edit"), /* ICON() */ "dialogs/edit", tr("Edit the value of the selected key for all objects"),
                     Shortcut.registerShortcut("properties:edit", tr("Edit Tags"), KeyEvent.VK_S,
                             Shortcut.ALT), false);
@@ -1053,7 +1052,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
     }
 
     class HelpAction extends AbstractAction {
-        public HelpAction() {
+        HelpAction() {
             putValue(NAME, tr("Go to OSM wiki for tag help (F1)"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with wiki help for selected object"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
@@ -1154,7 +1153,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
 
         final StringProperty TAGINFO_URL_PROP = new StringProperty("taginfo.url", "https://taginfo.openstreetmap.org/");
 
-        public TaginfoAction() {
+        TaginfoAction() {
             super(tr("Go to Taginfo"), "dialogs/taginfo", tr("Launch browser with Taginfo statistics for selected object"), null, false);
         }
 
@@ -1168,7 +1167,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
                 Map<String, Integer> values = (Map<String, Integer>) tagData.getValueAt(row, 1);
                 if (values.size() == 1) {
                     url = TAGINFO_URL_PROP.get() + "tags/" + key /* do not URL encode key, otherwise addr:street does not work */
-                            + "=" + Utils.encodeUrl(values.keySet().iterator().next());
+                            + '=' + Utils.encodeUrl(values.keySet().iterator().next());
                 } else {
                     url = TAGINFO_URL_PROP.get() + "keys/" + key; /* do not URL encode key, otherwise addr:street does not work */
                 }
@@ -1183,7 +1182,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
     }
 
     class PasteValueAction extends AbstractAction {
-        public PasteValueAction() {
+        PasteValueAction() {
             putValue(NAME, tr("Paste Value"));
             putValue(SHORT_DESCRIPTION, tr("Paste the value of the selected tag from clipboard"));
         }
@@ -1234,7 +1233,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
         /**
          * Constructs a new {@code CopyValueAction}.
          */
-        public CopyValueAction() {
+        CopyValueAction() {
             putValue(NAME, tr("Copy Value"));
             putValue(SHORT_DESCRIPTION, tr("Copy the value of the selected tag to clipboard"));
         }
@@ -1248,7 +1247,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
 
     class CopyKeyValueAction extends AbstractCopyAction {
 
-        public CopyKeyValueAction() {
+        CopyKeyValueAction() {
             putValue(NAME, tr("Copy selected Key(s)/Value(s)"));
             putValue(SHORT_DESCRIPTION, tr("Copy the key and value of the selected tag(s) to clipboard"));
         }
@@ -1262,7 +1261,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
 
     class CopyAllKeyValueAction extends AbstractCopyAction {
 
-        public CopyAllKeyValueAction() {
+        CopyAllKeyValueAction() {
             putValue(NAME, tr("Copy all Keys/Values"));
             putValue(SHORT_DESCRIPTION, tr("Copy the key and value of all the tags to clipboard"));
         }
@@ -1280,7 +1279,7 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
     class SearchAction extends AbstractAction {
         private final boolean sameType;
 
-        public SearchAction(boolean sameType) {
+        SearchAction(boolean sameType) {
             this.sameType = sameType;
             if (sameType) {
                 putValue(NAME, tr("Search Key/Value/Type"));
@@ -1322,7 +1321,9 @@ implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetLis
                 sep = " OR ";
             }
 
-            SearchSetting ss = new SearchSetting(s.toString(), SearchMode.replace, true, false, false);
+            final SearchSetting ss = new SearchSetting();
+            ss.text = s.toString();
+            ss.caseSensitive = true;
             org.openstreetmap.josm.actions.search.SearchAction.searchWithoutHistory(ss);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
index d4f7dc3..2daacb3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
@@ -68,10 +68,10 @@ import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.io.XmlWriter;
@@ -101,8 +101,8 @@ class TagEditHelper {
         }
     };
 
-    private String lastAddKey = null;
-    private String lastAddValue = null;
+    private String lastAddKey;
+    private String lastAddValue;
 
     public static final int DEFAULT_LRU_TAGS_NUMBER = 5;
     public static final int MAX_LRU_TAGS_NUMBER = 30;
@@ -225,13 +225,13 @@ class TagEditHelper {
      * @param togglePref  The preference to save the checkbox state to
      * @return {@code true} if the user accepts to overwrite key, {@code false} otherwise
      */
-    private boolean warnOverwriteKey(String action, String togglePref) {
+    private static boolean warnOverwriteKey(String action, String togglePref) {
         ExtendedDialog ed = new ExtendedDialog(
                 Main.parent,
                 tr("Overwrite key"),
                 new String[]{tr("Replace"), tr("Cancel")});
         ed.setButtonIcons(new String[]{"purge", "cancel"});
-        ed.setContent(action+"\n"+ tr("The new key is already used, overwrite values?"));
+        ed.setContent(action+'\n'+ tr("The new key is already used, overwrite values?"));
         ed.setCancelButton(2);
         ed.toggleEnable(togglePref);
         ed.showDialog();
@@ -423,7 +423,7 @@ class TagEditHelper {
         protected AutoCompletingComboBox values;
         protected Component componentUnderMouse;
 
-        public AbstractTagsDialog(Component parent, String title, String[] buttonTexts) {
+        AbstractTagsDialog(Component parent, String title, String[] buttonTexts) {
             super(parent, title, buttonTexts);
             addMouseListener(new PopupMenuLauncher(popupMenu));
         }
@@ -540,7 +540,7 @@ class TagEditHelper {
         // Counter of added commands for possible undo
         private int commandCount;
 
-        public AddTagsDialog() {
+        AddTagsDialog() {
             super(Main.parent, tr("Add value?"), new String[] {tr("OK"), tr("Cancel")});
             setButtonIcons(new String[] {"ok", "cancel"});
             setCancelButton(2);
@@ -650,7 +650,7 @@ class TagEditHelper {
             if (sc != null) {
                 lines.add(code(sc.getKeyText()) + tr("to apply first suggestion"));
             }
-            lines.add(code(KeyEvent.getKeyModifiersText(KeyEvent.SHIFT_MASK)+"+"+KeyEvent.getKeyText(KeyEvent.VK_ENTER))
+            lines.add(code(KeyEvent.getKeyModifiersText(KeyEvent.SHIFT_MASK)+'+'+KeyEvent.getKeyText(KeyEvent.VK_ENTER))
                     +tr("to add without closing the dialog"));
             sc = Shortcut.findShortcut(KeyEvent.VK_1, commandDownMask | KeyEvent.SHIFT_DOWN_MASK);
             if (sc != null) {
@@ -749,7 +749,7 @@ class TagEditHelper {
                         + "<style>td{" + color + "}</style>"
                         + "<table><tr>"
                         + "<td>" + count + ".</td>"
-                        + "<td style='border:1px solid gray'>" + XmlWriter.encode(t.toString(), true) + "<" +
+                        + "<td style='border:1px solid gray'>" + XmlWriter.encode(t.toString(), true) + '<' +
                         "/td></tr></table></html>");
                 tagLabel.setFont(tagLabel.getFont().deriveFont(Font.PLAIN));
                 if (action.isEnabled()) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
index 862fe49..34126b7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
@@ -172,7 +172,7 @@ public class ChildRelationBrowser extends JPanel {
      *
      */
     class EditAction extends AbstractAction implements TreeSelectionListener {
-        public EditAction() {
+        EditAction() {
             putValue(SHORT_DESCRIPTION, tr("Edit the relation the currently selected relation member refers to."));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
             putValue(NAME, tr("Edit"));
@@ -217,7 +217,7 @@ public class ChildRelationBrowser extends JPanel {
      * Recursively.
      */
     class DownloadAllChildRelationsAction extends AbstractAction{
-        public DownloadAllChildRelationsAction() {
+        DownloadAllChildRelationsAction() {
             putValue(SHORT_DESCRIPTION, tr("Download all child relations (recursively)"));
             putValue(SMALL_ICON, ImageProvider.get("download"));
             putValue(NAME, tr("Download All Children"));
@@ -239,7 +239,7 @@ public class ChildRelationBrowser extends JPanel {
      * Action for downloading all selected relations
      */
     class DownloadSelectedAction extends AbstractAction implements TreeSelectionListener {
-        public DownloadSelectedAction() {
+        DownloadSelectedAction() {
             putValue(SHORT_DESCRIPTION, tr("Download selected relations"));
             // FIXME: replace with better icon
             //
@@ -282,7 +282,7 @@ public class ChildRelationBrowser extends JPanel {
         protected int conflictsCount;
         protected Exception lastException;
 
-        public DownloadTask(String title, Dialog parent) {
+        DownloadTask(String title, Dialog parent) {
             super(title, new PleaseWaitProgressMonitor(parent), false);
         }
 
@@ -331,7 +331,7 @@ public class ChildRelationBrowser extends JPanel {
         private final Stack<Relation> relationsToDownload;
         private final Set<Long> downloadedRelationIds;
 
-        public DownloadAllChildrenTask(Dialog parent, Relation r) {
+        DownloadAllChildrenTask(Dialog parent, Relation r) {
             super(tr("Download relation members"), parent);
             this.relation = r;
             relationsToDownload = new Stack<>();
@@ -442,7 +442,7 @@ public class ChildRelationBrowser extends JPanel {
     class DownloadRelationSetTask extends DownloadTask {
         private final Set<Relation> relations;
 
-        public DownloadRelationSetTask(Dialog parent, Set<Relation> relations) {
+        DownloadRelationSetTask(Dialog parent, Set<Relation> relations) {
             super(tr("Download relation members"), parent);
             this.relations = relations;
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
index 1fe85a3..29ef27c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
@@ -78,13 +78,13 @@ import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.PresetHandler;
 import org.openstreetmap.josm.gui.tagging.TagEditorModel;
 import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -136,7 +136,7 @@ public class GenericRelationEditor extends RelationEditor  {
         setRememberWindowGeometry(getClass().getName() + ".geometry",
                 WindowGeometry.centerInWindow(Main.parent, new Dimension(700, 650)));
 
-        final PresetHandler presetHandler = new PresetHandler() {
+        final TaggingPresetHandler presetHandler = new TaggingPresetHandler() {
 
             @Override
             public void updateTags(List<Tag> tags) {
@@ -177,7 +177,7 @@ public class GenericRelationEditor extends RelationEditor  {
         }
         tagEditorPanel.getModel().ensureOneTag();
 
-        JSplitPane pane = buildSplitPane(relation);
+        JSplitPane pane = buildSplitPane();
         pane.setPreferredSize(new Dimension(100, 100));
 
         JPanel pnl = new JPanel();
@@ -459,7 +459,7 @@ public class GenericRelationEditor extends RelationEditor  {
      *
      * @return the split panel
      */
-    protected JSplitPane buildSplitPane(Relation relation) {
+    protected JSplitPane buildSplitPane() {
         final JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
         pane.setTopComponent(buildTagEditorPanel());
         pane.setBottomComponent(buildMemberEditorPanel());
@@ -467,8 +467,7 @@ public class GenericRelationEditor extends RelationEditor  {
         addWindowListener(new WindowAdapter() {
             @Override
             public void windowOpened(WindowEvent e) {
-                // has to be called when the window is visible, otherwise
-                // no effect
+                // has to be called when the window is visible, otherwise no effect
                 pane.setDividerLocation(0.3);
             }
         });
@@ -826,7 +825,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class AddSelectedAtStartAction extends AddFromSelectionAction implements TableModelListener {
-        public AddSelectedAtStartAction() {
+        AddSelectedAtStartAction() {
             putValue(SHORT_DESCRIPTION,
                     tr("Add all objects selected in the current dataset before the first member"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copystartright"));
@@ -857,7 +856,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class AddSelectedAtEndAction extends AddFromSelectionAction implements TableModelListener {
-        public AddSelectedAtEndAction() {
+        AddSelectedAtEndAction() {
             putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset after the last member"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyendright"));
             refreshEnabled();
@@ -890,7 +889,7 @@ public class GenericRelationEditor extends RelationEditor  {
         /**
          * Constructs a new {@code AddSelectedBeforeSelection}.
          */
-        public AddSelectedBeforeSelection() {
+        AddSelectedBeforeSelection() {
             putValue(SHORT_DESCRIPTION,
                     tr("Add all objects selected in the current dataset before the first selected member"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copybeforecurrentright"));
@@ -928,7 +927,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class AddSelectedAfterSelection extends AddFromSelectionAction implements TableModelListener, ListSelectionListener {
-        public AddSelectedAfterSelection() {
+        AddSelectedAfterSelection() {
             putValue(SHORT_DESCRIPTION,
                     tr("Add all objects selected in the current dataset after the last selected member"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyaftercurrentright"));
@@ -969,7 +968,7 @@ public class GenericRelationEditor extends RelationEditor  {
         /**
          * Constructs a new {@code RemoveSelectedAction}.
          */
-        public RemoveSelectedAction() {
+        RemoveSelectedAction() {
             putValue(SHORT_DESCRIPTION, tr("Remove all members referring to one of the selected objects"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "deletemembers"));
             updateEnabledState();
@@ -1004,7 +1003,7 @@ public class GenericRelationEditor extends RelationEditor  {
      *
      */
     class SelectedMembersForSelectionAction extends AbstractAction implements TableModelListener {
-        public SelectedMembersForSelectionAction() {
+        SelectedMembersForSelectionAction() {
             putValue(SHORT_DESCRIPTION, tr("Select relation members which refer to objects in the current selection"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "selectmembers"));
             updateEnabledState();
@@ -1040,7 +1039,7 @@ public class GenericRelationEditor extends RelationEditor  {
      *
      */
     class SelectPrimitivesForSelectedMembersAction extends AbstractAction implements ListSelectionListener {
-        public SelectPrimitivesForSelectedMembersAction() {
+        SelectPrimitivesForSelectedMembersAction() {
             putValue(SHORT_DESCRIPTION, tr("Select objects for selected relation members"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "selectprimitives"));
             updateEnabledState();
@@ -1062,7 +1061,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class SortAction extends AbstractAction implements TableModelListener {
-        public SortAction() {
+        SortAction() {
             String tooltip = tr("Sort the relation members");
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "sort"));
             putValue(NAME, tr("Sort"));
@@ -1089,7 +1088,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class SortBelowAction extends AbstractAction implements TableModelListener, ListSelectionListener {
-        public SortBelowAction() {
+        SortBelowAction() {
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "sort_below"));
             putValue(NAME, tr("Sort below"));
             putValue(SHORT_DESCRIPTION, tr("Sort the selected relation members and all members below"));
@@ -1117,7 +1116,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class ReverseAction extends AbstractAction implements TableModelListener {
-        public ReverseAction() {
+        ReverseAction() {
             putValue(SHORT_DESCRIPTION, tr("Reverse the order of the relation members"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "reverse"));
             putValue(NAME, tr("Reverse"));
@@ -1142,7 +1141,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class MoveUpAction extends AbstractAction implements ListSelectionListener {
-        public MoveUpAction() {
+        MoveUpAction() {
             String tooltip = tr("Move the currently selected members up");
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "moveup"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:moveup", tr("Relation Editor: Move Up"),
@@ -1164,7 +1163,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class MoveDownAction extends AbstractAction implements ListSelectionListener {
-        public MoveDownAction() {
+        MoveDownAction() {
             String tooltip = tr("Move the currently selected members down");
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "movedown"));
             Shortcut sc = Shortcut.registerShortcut("relationeditor:movedown", tr("Relation Editor: Move Down"),
@@ -1186,7 +1185,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class RemoveAction extends AbstractAction implements ListSelectionListener {
-        public RemoveAction() {
+        RemoveAction() {
             String tooltip = tr("Remove the currently selected members from this relation");
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(NAME, tr("Remove"));
@@ -1209,7 +1208,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class DeleteCurrentRelationAction extends AbstractAction implements PropertyChangeListener{
-        public DeleteCurrentRelationAction() {
+        DeleteCurrentRelationAction() {
             putValue(SHORT_DESCRIPTION, tr("Delete the currently edited relation"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(NAME, tr("Delete"));
@@ -1321,13 +1320,13 @@ public class GenericRelationEditor extends RelationEditor  {
                     new ButtonSpec(
                             tr("Yes, create a conflict and close"),
                             ImageProvider.get("ok"),
-                            tr("Click to create a conflict and close this relation editor") ,
+                            tr("Click to create a conflict and close this relation editor"),
                             null /* no specific help topic */
                     ),
                     new ButtonSpec(
                             tr("No, continue editing"),
                             ImageProvider.get("cancel"),
-                            tr("Click to return to the relation editor and to resume relation editing") ,
+                            tr("Click to return to the relation editor and to resume relation editing"),
                             null /* no specific help topic */
                     )
             };
@@ -1364,7 +1363,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class ApplyAction extends SavingAction {
-        public ApplyAction() {
+        ApplyAction() {
             putValue(SHORT_DESCRIPTION, tr("Apply the current updates"));
             putValue(SMALL_ICON, ImageProvider.get("save"));
             putValue(NAME, tr("Apply"));
@@ -1398,7 +1397,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class OKAction extends SavingAction {
-        public OKAction() {
+        OKAction() {
             putValue(SHORT_DESCRIPTION, tr("Apply the updates and close the dialog"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
             putValue(NAME, tr("OK"));
@@ -1435,7 +1434,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class CancelAction extends SavingAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(SHORT_DESCRIPTION, tr("Cancel the updates and close the dialog"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(NAME, tr("Cancel"));
@@ -1486,19 +1485,19 @@ public class GenericRelationEditor extends RelationEditor  {
                     new ButtonSpec(
                             tr("Yes, save the changes and close"),
                             ImageProvider.get("ok"),
-                            tr("Click to save the changes and close this relation editor") ,
+                            tr("Click to save the changes and close this relation editor"),
                             null /* no specific help topic */
                     ),
                     new ButtonSpec(
                             tr("No, discard the changes and close"),
                             ImageProvider.get("cancel"),
-                            tr("Click to discard the changes and close this relation editor") ,
+                            tr("Click to discard the changes and close this relation editor"),
                             null /* no specific help topic */
                     ),
                     new ButtonSpec(
                             tr("Cancel, continue editing"),
                             ImageProvider.get("cancel"),
-                            tr("Click to return to the relation editor and to resume relation editing") ,
+                            tr("Click to return to the relation editor and to resume relation editing"),
                             null /* no specific help topic */
                     )
             };
@@ -1519,7 +1518,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class AddTagAction extends AbstractAction {
-        public AddTagAction() {
+        AddTagAction() {
             putValue(SHORT_DESCRIPTION, tr("Add an empty tag"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
             setEnabled(true);
@@ -1532,7 +1531,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class DownloadIncompleteMembersAction extends AbstractAction implements TableModelListener {
-        public DownloadIncompleteMembersAction() {
+        DownloadIncompleteMembersAction() {
             String tooltip = tr("Download all incomplete members");
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincomplete"));
             putValue(NAME, tr("Download Members"));
@@ -1566,7 +1565,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class DownloadSelectedIncompleteMembersAction extends AbstractAction implements ListSelectionListener, TableModelListener{
-        public DownloadSelectedIncompleteMembersAction() {
+        DownloadSelectedIncompleteMembersAction() {
             putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
             putValue(NAME, tr("Download Members"));
@@ -1603,7 +1602,7 @@ public class GenericRelationEditor extends RelationEditor  {
     }
 
     class SetRoleAction extends AbstractAction implements ListSelectionListener, DocumentListener {
-        public SetRoleAction() {
+        SetRoleAction() {
             putValue(SHORT_DESCRIPTION, tr("Sets a role for the selected members"));
             putValue(SMALL_ICON, ImageProvider.get("apply"));
             putValue(NAME, tr("Apply Role"));
@@ -1683,7 +1682,7 @@ public class GenericRelationEditor extends RelationEditor  {
      * Creates a new relation with a copy of the current editor state.
      */
     class DuplicateRelationAction extends AbstractAction {
-        public DuplicateRelationAction() {
+        DuplicateRelationAction() {
             putValue(SHORT_DESCRIPTION, tr("Create a copy of this relation and open it in another editor window"));
             // FIXME provide an icon
             putValue(SMALL_ICON, ImageProvider.get("duplicate"));
@@ -1705,7 +1704,7 @@ public class GenericRelationEditor extends RelationEditor  {
      * Action for editing the currently selected relation.
      */
     class EditAction extends AbstractAction implements ListSelectionListener {
-        public EditAction() {
+        EditAction() {
             putValue(SHORT_DESCRIPTION, tr("Edit the relation the currently selected relation member refers to"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
             refreshEnabled();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
index 842c7f4..6ae2b50 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
@@ -14,12 +14,12 @@ import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 
 public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor {
-    private AutoCompletingTextField editor = null;
+    private AutoCompletingTextField editor;
     private final transient DataSet ds;
     private final transient Relation relation;
 
     /** user input is matched against this list of auto completion items */
-    private AutoCompletionList autoCompletionList = null;
+    private AutoCompletionList autoCompletionList;
 
     /**
      * Constructs a new {@code MemberRoleCellEditor}.
@@ -51,7 +51,10 @@ public class MemberRoleCellEditor extends AbstractCellEditor implements TableCel
         return editor.getText();
     }
 
-    /** Returns the edit field for this cell editor. */
+    /**
+     * Returns the edit field for this cell editor.
+     * @return the edit field for this cell editor
+     */
     public AutoCompletingTextField getEditor() {
         return editor;
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
index b9e066c..1c881b5 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
@@ -230,7 +230,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
 
     private class SelectPreviousGapAction extends AbstractAction {
 
-        public SelectPreviousGapAction() {
+        SelectPreviousGapAction() {
             putValue(NAME, tr("Select previous Gap"));
             putValue(SHORT_DESCRIPTION, tr("Select the previous relation member which gives rise to a gap"));
         }
@@ -249,7 +249,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
 
     private class SelectNextGapAction extends AbstractAction {
 
-        public SelectNextGapAction() {
+        SelectNextGapAction() {
             putValue(NAME, tr("Select next Gap"));
             putValue(SHORT_DESCRIPTION, tr("Select the next relation member which gives rise to a gap"));
         }
@@ -271,7 +271,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         /**
          * Constructs a new {@code ZoomToGapAction}.
          */
-        public ZoomToGapAction() {
+        ZoomToGapAction() {
             putValue(NAME, tr("Zoom to Gap"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to the gap in the way sequence"));
             updateEnabledState();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
index 9c6b1dd..5cccfba 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
@@ -190,7 +190,7 @@ public class MemberTableLinkedCellRenderer extends MemberTableCellRenderer {
         }
     }
 
-    private void setDotted(Graphics g) {
+    private static void setDotted(Graphics g) {
         ((Graphics2D) g).setStroke(new BasicStroke(
                 1f,
                 BasicStroke.CAP_BUTT,
@@ -200,7 +200,7 @@ public class MemberTableLinkedCellRenderer extends MemberTableCellRenderer {
                 0f));
     }
 
-    private void unsetDotted(Graphics g) {
+    private static void unsetDotted(Graphics g) {
         ((Graphics2D) g).setStroke(new BasicStroke());
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
index 6f24fcd..5ee08ab 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.dialogs.relation;
 
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JTable;
 
@@ -9,14 +10,21 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
 
+/**
+ * "Refers to" column in relation editor's member list.
+ */
 public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
 
+    /**
+     * Constructs a new {@code MemberTableMemberCellRenderer}.
+     */
     public MemberTableMemberCellRenderer() {
         super();
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive) {
-        setIcon(ImageProvider.get(primitive.getDisplayType()));
+    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+        // Make icon the full height of the table cell. Icon background is square.
+        setIcon(ImageProvider.getPadded(primitive, cellSize));
         setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
         setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
     }
@@ -29,10 +37,12 @@ public class MemberTableMemberCellRenderer extends MemberTableCellRenderer {
         if (value == null)
             return this;
 
+        Rectangle cellSize = table.getCellRect(row, column, false);
+
         renderForeground(isSelected);
         OsmPrimitive primitive = (OsmPrimitive) value;
         renderBackground(getModel(table), primitive, isSelected);
-        renderPrimitive(primitive);
+        renderPrimitive(primitive, cellSize);
         return this;
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
index c228ffb..7de9c5f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
@@ -38,9 +38,9 @@ import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionTypeCalculator;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.PresetHandler;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetType;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 
 public class MemberTableModel extends AbstractTableModel
@@ -50,12 +50,12 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
      * data of the table model: The list of members and the cached WayConnectionType of each member.
      **/
     private transient List<RelationMember> members;
-    private transient List<WayConnectionType> connectionType = null;
+    private transient List<WayConnectionType> connectionType;
 
     private DefaultListSelectionModel listSelectionModel;
     private final CopyOnWriteArrayList<IMemberModelListener> listeners;
     private final transient OsmDataLayer layer;
-    private final transient PresetHandler presetHandler;
+    private final transient TaggingPresetHandler presetHandler;
 
     private final transient WayConnectionTypeCalculator wayConnectionTypeCalculator = new WayConnectionTypeCalculator();
     private final transient RelationSorter relationSorter = new RelationSorter();
@@ -63,7 +63,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     /**
      * constructor
      */
-    public MemberTableModel(OsmDataLayer layer, PresetHandler presetHandler) {
+    public MemberTableModel(OsmDataLayer layer, TaggingPresetHandler presetHandler) {
         members = new ArrayList<>();
         listeners = new CopyOnWriteArrayList<>();
         this.layer = layer;
@@ -674,18 +674,6 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     }
 
     /**
-     * Replies true if the layer this model belongs to is equal to the active
-     * layer
-     *
-     * @return true if the layer this model belongs to is equal to the active
-     * layer
-     */
-    protected boolean isActiveLayer() {
-        if (!Main.isDisplayingMapView()) return false;
-        return Main.map.mapView.getActiveLayer() == layer;
-    }
-
-    /**
      * Sort the selected relation members by the way they are linked.
      */
     void sort() {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
index ae34d5b..2f53105 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
@@ -85,7 +85,7 @@ public class ReferringRelationsBrowser extends JPanel {
      *
      */
     class ReloadAction extends AbstractAction implements ListDataListener {
-        public ReloadAction() {
+        ReloadAction() {
             putValue(SHORT_DESCRIPTION, tr("Load parent relations"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
             putValue(NAME, tr("Reload"));
@@ -139,7 +139,7 @@ public class ReferringRelationsBrowser extends JPanel {
      *
      */
     class EditAction extends AbstractAction implements ListSelectionListener {
-        public EditAction() {
+        EditAction() {
             putValue(SHORT_DESCRIPTION, tr("Edit the currently selected relation"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
             putValue(NAME, tr("Edit"));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
index cd5bbeb..071d95a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
@@ -46,7 +46,7 @@ public class RelationDialogManager extends WindowAdapter implements MapView.Laye
         public final Relation relation;
         public final OsmDataLayer layer;
 
-        public DialogContext(OsmDataLayer layer, Relation relation) {
+        DialogContext(OsmDataLayer layer, Relation relation) {
             this.layer = layer;
             this.relation = relation;
         }
@@ -89,7 +89,7 @@ public class RelationDialogManager extends WindowAdapter implements MapView.Laye
 
         @Override
         public String toString() {
-            return "[Context: layer=" + layer.getName() + ",relation=" + relation.getId() + "]";
+            return "[Context: layer=" + layer.getName() + ",relation=" + relation.getId() + ']';
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
index 23b3e04..1c6cafd 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
@@ -108,7 +108,7 @@ public class RelationTree extends JTree {
         private DataSet ds;
         private TreePath path;
 
-        public RelationLoader(Dialog dialog, Relation relation, TreePath path) {
+        RelationLoader(Dialog dialog, Relation relation, TreePath path) {
             super(
                     tr("Load relation"),
                     new PleaseWaitProgressMonitor(
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
index ba6922b..d0aa431 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.gui.dialogs.relation;
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Rectangle;
 
 import javax.swing.JLabel;
 import javax.swing.JTable;
@@ -47,7 +48,7 @@ public class SelectionTableCellRenderer extends JLabel implements TableCellRende
         setToolTipText(null);
     }
 
-    protected void renderBackground(OsmPrimitive primitive, boolean isSelected) {
+    protected void renderBackground(OsmPrimitive primitive) {
         Color bgc = UIManager.getColor("Table.background");
         if (primitive != null && model != null && model.getNumMembersWithPrimitive(primitive) == 1) {
             bgc = BGCOLOR_SINGLE_ENTRY;
@@ -57,8 +58,8 @@ public class SelectionTableCellRenderer extends JLabel implements TableCellRende
         setBackground(bgc);
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive) {
-        setIcon(ImageProvider.get(primitive.getDisplayType()));
+    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+        setIcon(ImageProvider.getPadded(primitive, cellSize));
         setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
         setToolTipText(DefaultNameFormatter.getInstance().buildDefaultToolTip(primitive));
     }
@@ -71,8 +72,10 @@ public class SelectionTableCellRenderer extends JLabel implements TableCellRende
         if (value == null)
             return this;
 
-        renderBackground((OsmPrimitive) value, isSelected);
-        renderPrimitive((OsmPrimitive) value);
+        Rectangle cellSize = table.getCellRect(row, column, false);
+
+        renderBackground((OsmPrimitive) value);
+        renderPrimitive((OsmPrimitive) value, cellSize);
         return this;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationNodeMap.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationNodeMap.java
index aa14fc9..8e87cd3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationNodeMap.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationNodeMap.java
@@ -35,7 +35,7 @@ public class RelationNodeMap {
         public final Map<Integer, Set<Node>> ways = new TreeMap<>();
         public final boolean oneWay;
 
-        public NodesWays(boolean oneWay) {
+        NodesWays(boolean oneWay) {
             this.oneWay = oneWay;
         }
     }
@@ -167,9 +167,9 @@ public class RelationNodeMap {
         ts2.add(n);
     }
 
-    private Integer firstOneway = null;
-    private Node lastOnewayNode = null;
-    private Node firstCircular = null;
+    private Integer firstOneway;
+    private Node lastOnewayNode;
+    private Node firstCircular;
 
     /**
      * Return a relation member that is linked to the
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
index 59219ae..313655a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
@@ -35,10 +35,10 @@ public class WayConnectionType {
     /** True, if the element is part of a closed loop of ways. */
     public boolean isLoop;
 
-    public boolean isOnewayLoopForwardPart = false;
-    public boolean isOnewayLoopBackwardPart = false;
-    public boolean isOnewayHead = false;
-    public boolean isOnewayTail = false;
+    public boolean isOnewayLoopForwardPart;
+    public boolean isOnewayLoopBackwardPart;
+    public boolean isOnewayHead;
+    public boolean isOnewayTail;
 
     public WayConnectionType(boolean linkPrev, boolean linkNext, Direction direction) {
         this.linkPrev = linkPrev;
@@ -69,7 +69,7 @@ public class WayConnectionType {
     public String toString() {
         return "[P "+linkPrev+" ;N "+linkNext+" ;D "+direction+" ;L "+isLoop+
                 " ;FP " + isOnewayLoopForwardPart+";BP " + isOnewayLoopBackwardPart+
-                ";OH " + isOnewayHead+";OT " + isOnewayTail+"]";
+                ";OH " + isOnewayHead+";OT " + isOnewayTail+']';
     }
 
     public String getToolTip() {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
index e3fed76..23e3f37 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
@@ -50,7 +50,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable {
 
     private static final class GroupTreeNode extends DefaultMutableTreeNode {
 
-        public GroupTreeNode(Object userObject) {
+        GroupTreeNode(Object userObject) {
             super(userObject);
         }
 
@@ -72,7 +72,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable {
      * If {@link #filter} is not <code>null</code> only errors are displayed
      * that refer to one of the primitives in the filter.
      */
-    private transient Set<? extends OsmPrimitive> filter = null;
+    private transient Set<? extends OsmPrimitive> filter;
 
     /** a counter to check if tree has been rebuild */
     private int updateCount;
diff --git a/src/org/openstreetmap/josm/gui/download/BookmarkList.java b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
index c73d1a8..86315e7 100644
--- a/src/org/openstreetmap/josm/gui/download/BookmarkList.java
+++ b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
@@ -197,7 +197,7 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
         /**
          * Constructs a new {@code BookmarkCellRenderer}.
          */
-        public BookmarkCellRenderer() {
+        BookmarkCellRenderer() {
             setOpaque(true);
             setIcon(ImageProvider.get("dialogs", "bookmark"));
         }
diff --git a/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java b/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
index db0de74..def8c0c 100644
--- a/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
@@ -175,7 +175,7 @@ public class BookmarkSelection implements DownloadSelection {
      *
      */
     class AddAction extends AbstractAction {
-        public AddAction() {
+        AddAction() {
             putValue(NAME, tr("Create bookmark"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "bookmark-new"));
             putValue(SHORT_DESCRIPTION, tr("Add a bookmark for the currently selected download area"));
@@ -211,7 +211,7 @@ public class BookmarkSelection implements DownloadSelection {
         /**
          * Constructs a new {@code RemoveAction}.
          */
-        public RemoveAction() {
+        RemoveAction() {
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(SHORT_DESCRIPTION, tr("Remove the currently selected bookmarks"));
             updateEnabledState();
@@ -242,7 +242,7 @@ public class BookmarkSelection implements DownloadSelection {
         /**
          * Constructs a new {@code RenameAction}.
          */
-        public RenameAction() {
+        RenameAction() {
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
             putValue(SHORT_DESCRIPTION, tr("Rename the currently selected bookmark"));
             updateEnabledState();
diff --git a/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java b/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java
index 664cb87..10c0470 100644
--- a/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java
@@ -41,7 +41,7 @@ import org.openstreetmap.josm.tools.OsmUrlToBounds;
  */
 public class BoundingBoxSelection implements DownloadSelection {
 
-    private JosmTextField[] latlon = null;
+    private JosmTextField[] latlon;
     private final JosmTextArea tfOsmUrl = new JosmTextArea();
     private final JosmTextArea showUrl = new JosmTextArea();
     private DownloadDialog parent;
@@ -190,7 +190,7 @@ public class BoundingBoxSelection implements DownloadSelection {
     class LatValueChecker extends FocusAdapter implements ActionListener{
         private JosmTextField tfLatValue;
 
-        public LatValueChecker(JosmTextField tfLatValue) {
+        LatValueChecker(JosmTextField tfLatValue) {
             this.tfLatValue = tfLatValue;
         }
 
@@ -223,7 +223,7 @@ public class BoundingBoxSelection implements DownloadSelection {
     class LonValueChecker extends FocusAdapter implements ActionListener {
         private JosmTextField tfLonValue;
 
-        public LonValueChecker(JosmTextField tfLonValue) {
+        LonValueChecker(JosmTextField tfLonValue) {
             this.tfLonValue = tfLonValue;
         }
 
@@ -256,7 +256,7 @@ public class BoundingBoxSelection implements DownloadSelection {
     static class SelectAllOnFocusHandler extends FocusAdapter {
         private JTextComponent tfTarget;
 
-        public SelectAllOnFocusHandler(JTextComponent tfTarget) {
+        SelectAllOnFocusHandler(JTextComponent tfTarget) {
             this.tfTarget = tfTarget;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
index 0a33155..bd3c7c2 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
@@ -74,7 +74,7 @@ public class DownloadDialog extends JDialog  {
     protected JCheckBox cbNewLayer;
     protected JCheckBox cbStartup;
     protected final JLabel sizeCheck = new JLabel();
-    protected transient Bounds currentBounds = null;
+    protected transient Bounds currentBounds;
     protected boolean canceled;
 
     protected JCheckBox cbDownloadOsmData;
@@ -116,11 +116,12 @@ public class DownloadDialog extends JDialog  {
         cbDownloadNotes.getModel().addChangeListener(checkboxChangeListener);
         pnl.add(cbDownloadNotes, GBC.eol().insets(50, 5, 1, 5));
 
+        // must be created before hook
+        slippyMapChooser = new SlippyMapChooser();
+
         // hook for subclasses
         buildMainPanelAboveDownloadSelections(pnl);
 
-        slippyMapChooser = new SlippyMapChooser();
-
         // predefined download selections
         downloadSelections.add(slippyMapChooser);
         downloadSelections.add(new BookmarkSelection());
@@ -473,7 +474,7 @@ public class DownloadDialog extends JDialog  {
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Click to close the dialog and to abort downloading"));
@@ -491,7 +492,7 @@ public class DownloadDialog extends JDialog  {
     }
 
     class DownloadAction extends AbstractAction {
-        public DownloadAction() {
+        DownloadAction() {
             putValue(NAME, tr("Download"));
             putValue(SMALL_ICON, ImageProvider.get("download"));
             putValue(SHORT_DESCRIPTION, tr("Click to download the currently selected area"));
diff --git a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
index ba75a18..a8799c8 100644
--- a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
@@ -84,7 +84,7 @@ public class PlaceSelection implements DownloadSelection {
         public final String thirdcol;
         public final String fourthcol;
 
-        public Server(String n, String u, String t, String f) {
+        Server(String n, String u, String t, String f) {
             name = n;
             url = u;
             thirdcol = t;
@@ -183,8 +183,8 @@ public class PlaceSelection implements DownloadSelection {
         public String description;
         public double lat;
         public double lon;
-        public int zoom = 0;
-        public Bounds bounds = null;
+        public int zoom;
+        public Bounds bounds;
 
         public Bounds getDownloadArea() {
             return bounds != null ? bounds : OsmUrlToBounds.positionToBounds(lat, lon, zoom);
@@ -197,9 +197,9 @@ public class PlaceSelection implements DownloadSelection {
      *
      */
     private static class NameFinderResultParser extends DefaultHandler {
-        private SearchResult currentResult = null;
-        private StringBuffer description = null;
-        private int depth = 0;
+        private SearchResult currentResult;
+        private StringBuilder description;
+        private int depth;
         private List<SearchResult> data = new LinkedList<>();
 
         /**
@@ -225,7 +225,7 @@ public class PlaceSelection implements DownloadSelection {
                     currentResult.zoom = Integer.parseInt(atts.getValue("zoom"));
                     data.add(currentResult);
                 } else if ("description".equals(qName) && (depth == 3)) {
-                    description = new StringBuffer();
+                    description = new StringBuilder();
                 } else if ("named".equals(qName) && (depth == 4)) {
                     // this is a "named" place in the nearest places list.
                     String info = atts.getValue("info");
@@ -287,7 +287,7 @@ public class PlaceSelection implements DownloadSelection {
 
     class SearchAction extends AbstractAction implements DocumentListener {
 
-        public SearchAction() {
+        SearchAction() {
             putValue(NAME, tr("Search ..."));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
             putValue(SHORT_DESCRIPTION, tr("Click to start searching for places"));
@@ -329,11 +329,11 @@ public class PlaceSelection implements DownloadSelection {
         private String searchExpression;
         private HttpURLConnection connection;
         private List<SearchResult> data;
-        private boolean canceled = false;
+        private boolean canceled;
         private Server useserver;
         private Exception lastException;
 
-        public NameQueryTask(String searchExpression) {
+        NameQueryTask(String searchExpression) {
             super(tr("Querying name server"), false /* don't ignore exceptions */);
             this.searchExpression = searchExpression;
             useserver = (Server) server.getSelectedItem();
@@ -412,7 +412,7 @@ public class PlaceSelection implements DownloadSelection {
         private transient List<SearchResult> data;
         private transient ListSelectionModel selectionModel;
 
-        public NamedResultTableModel(ListSelectionModel selectionModel) {
+        NamedResultTableModel(ListSelectionModel selectionModel) {
             data = new ArrayList<>();
             this.selectionModel = selectionModel;
         }
@@ -451,8 +451,8 @@ public class PlaceSelection implements DownloadSelection {
     }
 
     static class NamedResultTableColumnModel extends DefaultTableColumnModel {
-        private TableColumn col3 = null;
-        private TableColumn col4 = null;
+        private TableColumn col3;
+        private TableColumn col4;
         protected final void createColumns() {
             TableColumn col = null;
             NamedResultCellRenderer renderer = new NamedResultCellRenderer();
@@ -496,7 +496,7 @@ public class PlaceSelection implements DownloadSelection {
             fireColumnMarginChanged();
         }
 
-        public NamedResultTableColumnModel() {
+        NamedResultTableColumnModel() {
             createColumns();
         }
     }
@@ -516,7 +516,7 @@ public class PlaceSelection implements DownloadSelection {
         /**
          * Constructs a new {@code NamedResultCellRenderer}.
          */
-        public NamedResultCellRenderer() {
+        NamedResultCellRenderer() {
             setOpaque(true);
             setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
         }
diff --git a/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java b/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java
index 80a2c91..7acc53c 100644
--- a/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java
+++ b/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java
@@ -8,6 +8,7 @@ import java.awt.Toolkit;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 
+import javax.swing.ActionMap;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.data.Bounds;
@@ -15,15 +16,15 @@ import org.openstreetmap.josm.gui.bbox.BBoxChooser;
 import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
 
 /**
- * JComponent that displays the slippy map tiles
+ * JComponent that displays the slippy map tiles.
  *
  * @author Tim Haussmann
- *
+ * @since 1390
  */
 public class SlippyMapChooser extends JPanel implements DownloadSelection, PropertyChangeListener {
 
     private DownloadDialog iGui;
-    private SlippyMapBBoxChooser pnlSlippyMapBBoxChooser;
+    private final SlippyMapBBoxChooser pnlSlippyMapBBoxChooser;
     // standard dimension
     private Dimension iDownloadDialogDimension;
 
@@ -86,4 +87,13 @@ public class SlippyMapChooser extends JPanel implements DownloadSelection, Prope
             pnlSlippyMapBBoxChooser.refreshTileSources();
         }
     }
+
+    /**
+     * Returns the action map of the underlying navigation component.
+     * @return the action map of the underlying navigation component
+     * @since 8932
+     */
+    public final ActionMap getNavigationComponentActionMap() {
+        return pnlSlippyMapBBoxChooser.getActionMap();
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
index 1fae63f..44bbce6 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
@@ -426,7 +426,7 @@ public class HelpBrowser extends JDialog {
     }
 
     class OpenInBrowserAction extends AbstractAction {
-        public OpenInBrowserAction() {
+        OpenInBrowserAction() {
             putValue(SHORT_DESCRIPTION, tr("Open the current help page in an external browser"));
             putValue(SMALL_ICON, ImageProvider.get("help", "internet"));
         }
@@ -441,7 +441,7 @@ public class HelpBrowser extends JDialog {
         /**
          * Constructs a new {@code EditAction}.
          */
-        public EditAction() {
+        EditAction() {
             putValue(SHORT_DESCRIPTION, tr("Edit the current help page"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
         }
@@ -473,7 +473,7 @@ public class HelpBrowser extends JDialog {
     }
 
     class ReloadAction extends AbstractAction {
-        public ReloadAction() {
+        ReloadAction() {
             putValue(SHORT_DESCRIPTION, tr("Reload the current help page"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
         }
@@ -487,7 +487,7 @@ public class HelpBrowser extends JDialog {
     static class BackAction extends AbstractAction implements Observer {
         private transient HelpBrowserHistory history;
 
-        public BackAction(HelpBrowserHistory history) {
+        BackAction(HelpBrowserHistory history) {
             this.history = history;
             history.addObserver(this);
             putValue(SHORT_DESCRIPTION, tr("Go to the previous page"));
@@ -509,7 +509,7 @@ public class HelpBrowser extends JDialog {
     static class ForwardAction extends AbstractAction implements Observer {
         private transient HelpBrowserHistory history;
 
-        public ForwardAction(HelpBrowserHistory history) {
+        ForwardAction(HelpBrowserHistory history) {
             this.history = history;
             history.addObserver(this);
             putValue(SHORT_DESCRIPTION, tr("Go to the next page"));
@@ -532,7 +532,7 @@ public class HelpBrowser extends JDialog {
         /**
          * Constructs a new {@code HomeAction}.
          */
-        public HomeAction() {
+        HomeAction() {
             putValue(SHORT_DESCRIPTION, tr("Go to the JOSM help home page"));
             putValue(SMALL_ICON, ImageProvider.get("help", "home"));
         }
@@ -600,7 +600,7 @@ public class HelpBrowser extends JDialog {
         public void hyperlinkUpdate(HyperlinkEvent e) {
             if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED)
                 return;
-            if (e.getURL() == null || e.getURL().toString().startsWith(url+"#")) {
+            if (e.getURL() == null || e.getURL().toString().startsWith(url+'#')) {
                 // Probably hyperlink event on a an A-element with a href consisting of a fragment only, i.e. "#ALocalFragment".
                 String fragment = getUrlFragment(e);
                 if (fragment != null) {
diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java b/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
index 2a5e250..3ff55d5 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowserHistory.java
@@ -9,7 +9,7 @@ import java.util.Observable;
 public class HelpBrowserHistory extends Observable {
     private HelpBrowser browser;
     private List<String> history;
-    private int historyPos = 0;
+    private int historyPos;
 
     public HelpBrowserHistory(HelpBrowser browser) {
         this.browser = browser;
diff --git a/src/org/openstreetmap/josm/gui/help/HelpUtil.java b/src/org/openstreetmap/josm/gui/help/HelpUtil.java
index d6d0320..6182ec4 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpUtil.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpUtil.java
@@ -126,7 +126,7 @@ public final class HelpUtil {
         String ret = LanguageInfo.getWikiLanguagePrefix(type);
         if (ret == null)
             return ret;
-        ret = "/" + ret + Main.pref.get("help.pathhelp", "/Help").replaceAll("^\\/+", ""); // remove leading /
+        ret = '/' + ret + Main.pref.get("help.pathhelp", "/Help").replaceAll("^\\/+", ""); // remove leading /
         return ret.replaceAll("\\/+", "\\/"); // collapse sequences of //
     }
 
@@ -145,7 +145,7 @@ public final class HelpUtil {
         String prefix = getHelpTopicPrefix(type);
         if (prefix == null || topic == null || topic.trim().isEmpty() || "/".equals(topic.trim()))
             return prefix;
-        prefix += "/" + topic;
+        prefix += '/' + topic;
         return prefix.replaceAll("\\/+", "\\/"); // collapse sequences of //
     }
 
diff --git a/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java b/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java
index 670a60c..5384925 100644
--- a/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java
+++ b/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java
@@ -245,7 +245,7 @@ public class CoordinateInfoViewer extends JPanel {
          * @param model a model
          * @param role the role for this viewer.
          */
-        public LatLonViewer(HistoryBrowserModel model, PointInTimeType role) {
+        LatLonViewer(HistoryBrowserModel model, PointInTimeType role) {
             build();
             this.model = model;
             this.role = role;
@@ -296,7 +296,7 @@ public class CoordinateInfoViewer extends JPanel {
 
         private JLabel lblDistance;
 
-        public DistanceViewer(HistoryBrowserModel model) {
+        DistanceViewer(HistoryBrowserModel model) {
             super(model, PointInTimeType.REFERENCE_POINT_IN_TIME);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/history/DiffTableModel.java b/src/org/openstreetmap/josm/gui/history/DiffTableModel.java
index 21bfb63..f626be3 100644
--- a/src/org/openstreetmap/josm/gui/history/DiffTableModel.java
+++ b/src/org/openstreetmap/josm/gui/history/DiffTableModel.java
@@ -14,7 +14,7 @@ import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
  */
 class DiffTableModel extends AbstractTableModel {
     private transient List<TwoColumnDiff.Item> rows = new ArrayList<>();
-    private boolean reversed = false;
+    private boolean reversed;
 
     public void setRows(List<TwoColumnDiff.Item> rows, boolean reversed) {
         this.rows = rows;
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
index 17bb5e2..f35ae90 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java
@@ -153,7 +153,7 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
     }
 
     class CloseAction extends AbstractAction {
-        public CloseAction() {
+        CloseAction() {
             putValue(NAME, tr("Close"));
             putValue(SHORT_DESCRIPTION, tr("Close the dialog"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
@@ -172,7 +172,7 @@ public class HistoryBrowserDialog extends JDialog implements HistoryDataSetListe
     }
 
     class ReloadAction extends AbstractAction {
-        public ReloadAction() {
+        ReloadAction() {
             putValue(NAME, tr("Reload"));
             putValue(SHORT_DESCRIPTION, tr("Reload the history from the server"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
index 0525456..bd66830 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
@@ -131,13 +131,6 @@ public class HistoryBrowserModel extends Observable implements LayerChangeListen
         return history;
     }
 
-    protected boolean hasNewNodes(Way way) {
-        for (Node n: way.getNodes()) {
-            if (n.isNew()) return true;
-        }
-        return false;
-    }
-
     protected boolean canShowAsLatest(OsmPrimitive primitive) {
         if (primitive == null) return false;
         if (primitive.isNew() || !primitive.isUsable()) return false;
@@ -794,7 +787,7 @@ public class HistoryBrowserModel extends Observable implements LayerChangeListen
             }
         }
 
-        private User getCurrentUser() {
+        private static User getCurrentUser() {
             UserInfo info = JosmUserIdentityManager.getInstance().getUserInfo();
             return info == null ? User.getAnonymous() : User.createOsmUser(info.getId(), info.getDisplayName());
         }
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java b/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
index 7291b6a..e007578 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java
@@ -49,11 +49,11 @@ import org.xml.sax.SAXException;
  */
 public class HistoryLoadTask extends PleaseWaitRunnable {
 
-    private boolean canceled = false;
-    private Exception lastException  = null;
+    private boolean canceled;
+    private Exception lastException;
     private Set<PrimitiveId> toLoad;
     private HistoryDataSet loadedData;
-    private OsmServerHistoryReader reader = null;
+    private OsmServerHistoryReader reader;
 
     /**
      * Constructs a new {@code HistoryLoadTask}.
diff --git a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
index 1ba3a6d..f7fdcd8 100644
--- a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
+++ b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
@@ -88,7 +88,7 @@ public class NodeListViewer extends JPanel {
 
     protected TableModelListener newReversedChangeListener(final JTable table, final NodeListTableColumnModel columnModel) {
         return new TableModelListener() {
-            private Boolean reversed = null;
+            private Boolean reversed;
             private final String nonReversedText = tr("Nodes") + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)");
             private final String reversedText = tr("Nodes") + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)");
 
@@ -200,7 +200,7 @@ public class NodeListViewer extends JPanel {
         private final ZoomToNodeAction zoomToNodeAction;
         private final ShowHistoryAction showHistoryAction;
 
-        public NodeListPopupMenu() {
+        NodeListPopupMenu() {
             zoomToNodeAction = new ZoomToNodeAction();
             add(zoomToNodeAction);
             showHistoryAction = new ShowHistoryAction();
@@ -222,7 +222,7 @@ public class NodeListViewer extends JPanel {
         /**
          * Constructs a new {@code ZoomToNodeAction}.
          */
-        public ZoomToNodeAction() {
+        ZoomToNodeAction() {
             putValue(NAME, tr("Zoom to node"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to this node in the current data layer"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "zoomin"));
@@ -268,7 +268,7 @@ public class NodeListViewer extends JPanel {
         /**
          * Constructs a new {@code ShowHistoryAction}.
          */
-        public ShowHistoryAction() {
+        ShowHistoryAction() {
             putValue(NAME, tr("Show history"));
             putValue(SHORT_DESCRIPTION, tr("Open a history browser with the history of this node"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "history"));
@@ -318,11 +318,12 @@ public class NodeListViewer extends JPanel {
     }
 
     class InternalPopupMenuLauncher extends PopupMenuLauncher {
-        public InternalPopupMenuLauncher() {
+        InternalPopupMenuLauncher() {
             super(popupMenu);
         }
 
-        @Override protected int checkTableSelection(JTable table, Point p) {
+        @Override
+        protected int checkTableSelection(JTable table, Point p) {
             int row = super.checkTableSelection(table, p);
             popupMenu.prepare(primitiveIdAtRow(table.getModel(), row));
             return row;
@@ -333,7 +334,7 @@ public class NodeListViewer extends JPanel {
         private JTable table;
         private ShowHistoryAction showHistoryAction;
 
-        public DoubleClickAdapter(JTable table) {
+        DoubleClickAdapter(JTable table) {
             this.table = table;
             showHistoryAction = new ShowHistoryAction();
         }
diff --git a/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java b/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java
index 5fc18e3..e519a20 100644
--- a/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/history/RelationMemberListTableCellRenderer.java
@@ -50,7 +50,7 @@ public class RelationMemberListTableCellRenderer extends JLabel implements Table
         }
     }
 
-    protected void renderRole(Item diffItem, int row, boolean isSelected) {
+    protected void renderRole(Item diffItem) {
         String text = "";
         Color bgColor = diffItem.state.getColor();
         RelationMemberData member = (RelationMemberData) diffItem.value;
@@ -60,7 +60,7 @@ public class RelationMemberListTableCellRenderer extends JLabel implements Table
         setBackground(bgColor);
     }
 
-    protected void renderPrimitive(Item diffItem, int row, boolean isSelected) {
+    protected void renderPrimitive(Item diffItem) {
         String text = "";
         Color bgColor = diffItem.state.getColor();
         RelationMemberData member = (RelationMemberData) diffItem.value;
@@ -86,17 +86,13 @@ public class RelationMemberListTableCellRenderer extends JLabel implements Table
         renderIcon((RelationMemberData) member.value);
         switch(column) {
         case 0:
-            renderRole(member, row, isSelected);
+            renderRole(member);
             break;
         case 1:
-            renderPrimitive(member, row, isSelected);
+            renderPrimitive(member);
             break;
         }
 
         return this;
     }
-
-    protected DiffTableModel getRelationMemberTableModel(JTable table) {
-        return (DiffTableModel) table.getModel();
-    }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
index a4fa8c7..617e3ef 100644
--- a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
@@ -1,11 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.history;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
 import java.awt.Color;
 import java.awt.Component;
-import java.awt.Font;
 
 import javax.swing.JLabel;
 import javax.swing.JTable;
@@ -30,11 +27,9 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         String text = key;
         Color bgColor = UIManager.getColor("Table.background");
         Color fgColor = UIManager.getColor("Table.foreground");
-        Font font = UIManager.getFont("Table.font");
         if (!model.hasTag(key)) {
-            text = tr("not present");
+            text = "";
             bgColor = BGCOLOR_DIFFERENCE;
-            font = font.deriveFont(Font.ITALIC);
         } else if (!model.oppositeHasTag(key)) {
             bgColor = BGCOLOR_DIFFERENCE;
         }
@@ -47,18 +42,14 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         setToolTipText(text);
         setBackground(bgColor);
         setForeground(fgColor);
-        setFont(font);
     }
 
     protected void renderValue(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected) {
         String text = "";
         Color bgColor = UIManager.getColor("Table.background");
         Color fgColor = UIManager.getColor("Table.foreground");
-        Font font = UIManager.getFont("Table.font");
         if (!model.hasTag(key)) {
-            text = tr("not present");
             bgColor = BGCOLOR_DIFFERENCE;
-            font = font.deriveFont(Font.ITALIC);
         } else {
             text = model.getValue(key);
             if (!model.hasSameValueAsOpposite(key)) {
@@ -74,7 +65,6 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         setToolTipText(text);
         setBackground(bgColor);
         setForeground(fgColor);
-        setFont(font);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
index cb67ae3..6bee96a 100644
--- a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
+++ b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
@@ -48,7 +48,7 @@ class TwoColumnDiff {
             }
         }
 
-        public Item(DiffItemType state, Object value) {
+        Item(DiffItemType state, Object value) {
             this.state = state;
             this.value = state == DiffItemType.EMPTY ? null : value;
         }
@@ -61,9 +61,9 @@ class TwoColumnDiff {
     public List<Item> currentDiff;
     private Object[] reference;
     private Object[] current;
-    boolean referenceReversed = false;
+    boolean referenceReversed;
 
-    public TwoColumnDiff(Object[] reference, Object[] current) {
+    TwoColumnDiff(Object[] reference, Object[] current) {
         this.reference = Utils.copyArray(reference);
         this.current = Utils.copyArray(current);
         referenceDiff = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
index 3b8d50e..95889c7 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
@@ -184,7 +184,7 @@ public class VersionInfoPanel extends JPanel implements Observer{
     }
 
     protected static String getUserUrl(String username) {
-        return Main.getBaseUserUrl() + "/" +  Utils.encodeUrl(username).replaceAll("\\+", "%20");
+        return Main.getBaseUserUrl() + '/' +  Utils.encodeUrl(username).replaceAll("\\+", "%20");
     }
 
     @Override
@@ -247,7 +247,7 @@ public class VersionInfoPanel extends JPanel implements Observer{
     static class OpenChangesetDialogAction extends AbstractAction {
         private Integer id;
 
-        public OpenChangesetDialogAction() {
+        OpenChangesetDialogAction() {
             super(tr("Changeset"), new ImageProvider("dialogs/changeset", "changesetmanager").resetMaxSize(new Dimension(16, 16)).get());
             putValue(SHORT_DESCRIPTION, tr("Opens the Changeset Manager window for the selected changesets"));
         }
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTable.java b/src/org/openstreetmap/josm/gui/history/VersionTable.java
index 1984ea1..c2ea042 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionTable.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionTable.java
@@ -154,7 +154,7 @@ public class VersionTable extends JTable implements Observer{
         /**
          * Constructs a new {@code ChangesetInfoAction}.
          */
-        public ChangesetInfoAction() {
+        ChangesetInfoAction() {
             super(true);
             putValue(NAME, tr("Changeset info"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with information about the changeset"));
@@ -191,7 +191,7 @@ public class VersionTable extends JTable implements Observer{
         /**
          * Constructs a new {@code UserInfoAction}.
          */
-        public UserInfoAction() {
+        UserInfoAction() {
             super(true);
             putValue(NAME, tr("User info"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with information about the user"));
@@ -202,7 +202,7 @@ public class VersionTable extends JTable implements Observer{
         protected String createInfoUrl(Object infoObject) {
             if (infoObject instanceof HistoryOsmPrimitive) {
                 HistoryOsmPrimitive hp = (HistoryOsmPrimitive) infoObject;
-                return hp.getUser() == null ? null : Main.getBaseUserUrl() + "/" + hp.getUser().getName();
+                return hp.getUser() == null ? null : Main.getBaseUserUrl() + '/' + hp.getUser().getName();
             } else {
                 return null;
             }
@@ -232,7 +232,7 @@ public class VersionTable extends JTable implements Observer{
         /**
          * Constructs a new {@code VersionTablePopupMenu}.
          */
-        public VersionTablePopupMenu() {
+        VersionTablePopupMenu() {
             super();
             build();
         }
@@ -310,7 +310,10 @@ public class VersionTable extends JTable implements Observer{
         @Override
         public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
                 int row, int column) {
-            String v = value.toString();
+            String v = "";
+            if (value != null) {
+                v = value.toString();
+            }
             setText(v);
             return this;
         }
diff --git a/src/org/openstreetmap/josm/gui/io/AbstractUploadDialog.java b/src/org/openstreetmap/josm/gui/io/AbstractUploadDialog.java
index 38ff05e..6db97ae 100644
--- a/src/org/openstreetmap/josm/gui/io/AbstractUploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/AbstractUploadDialog.java
@@ -14,7 +14,7 @@ import javax.swing.JDialog;
  */
 public abstract class AbstractUploadDialog extends JDialog {
 
-    private boolean canceled = false;
+    private boolean canceled;
 
     /**
      * Creates a dialog with an empty title and the specified modality and
diff --git a/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java b/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
index 9c17b38..4d76391 100644
--- a/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
+++ b/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
@@ -49,7 +49,7 @@ class ActionFlagsTableCell extends JPanel implements TableCellRenderer, TableCel
     /**
      * Constructs a new {@code ActionFlagsTableCell}.
      */
-    public ActionFlagsTableCell() {
+    ActionFlagsTableCell() {
         checkBoxes[0] = new JCheckBox(tr("Upload"));
         checkBoxes[1] = new JCheckBox(tr("Save"));
         setLayout(new GridBagLayout());
diff --git a/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java b/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
index 42b1c78..c54e79c 100644
--- a/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
@@ -300,7 +300,7 @@ public class ChangesetManagementPanel extends JPanel implements ListDataListener
      *
      */
     class RefreshAction extends AbstractAction {
-        public RefreshAction() {
+        RefreshAction() {
             putValue(SHORT_DESCRIPTION, tr("Load the list of your open changesets from the server"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
         }
@@ -317,7 +317,7 @@ public class ChangesetManagementPanel extends JPanel implements ListDataListener
      *
      */
     class CloseChangesetAction extends AbstractAction implements ItemListener{
-        public CloseChangesetAction() {
+        CloseChangesetAction() {
             putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
             putValue(SHORT_DESCRIPTION, tr("Close the currently selected open changeset"));
             refreshEnabledState();
diff --git a/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java b/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
index 86eaa74..e1fdfe9 100644
--- a/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
@@ -118,7 +118,7 @@ public class CloseChangesetDialog extends JDialog {
     }
 
     class CloseAction extends AbstractAction implements ListSelectionListener {
-        public CloseAction() {
+        CloseAction() {
             putValue(NAME, tr("Close changesets"));
             putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
             putValue(SHORT_DESCRIPTION, tr("Close the selected open changesets"));
@@ -144,7 +144,7 @@ public class CloseChangesetDialog extends JDialog {
 
     class CancelAction extends AbstractAction {
 
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Cancel closing of changesets"));
diff --git a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
index 874c004..ecfd764 100644
--- a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
@@ -277,7 +277,7 @@ public class CredentialDialog extends JDialog {
             updateWarningLabel(apiUrl);
         }
 
-        public OsmApiCredentialsPanel(CredentialDialog owner) {
+        OsmApiCredentialsPanel(CredentialDialog owner) {
             super(owner);
             build();
         }
@@ -298,7 +298,7 @@ public class CredentialDialog extends JDialog {
             updateWarningLabel(host);
         }
 
-        public OtherHostCredentialsPanel(CredentialDialog owner, String host) {
+        OtherHostCredentialsPanel(CredentialDialog owner, String host) {
             super(owner);
             this.host = host;
             build();
@@ -313,14 +313,14 @@ public class CredentialDialog extends JDialog {
             tfPassword.setToolTipText(tr("Please enter the password for authenticating at your proxy server"));
             lblHeading.setText(
                     "<html>" + tr("Authenticating at the HTTP proxy ''{0}'' failed. Please enter a valid username and a valid password.",
-                            Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_HOST) + ":" +
+                            Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_HOST) + ':' +
                             Main.pref.get(ProxyPreferencesPanel.PROXY_HTTP_PORT)) + "</html>");
             lblWarning.setText("<html>" +
                     tr("Warning: depending on the authentication method the proxy server uses the password may be transferred unencrypted.")
                     + "</html>");
         }
 
-        public HttpProxyCredentialsPanel(CredentialDialog owner) {
+        HttpProxyCredentialsPanel(CredentialDialog owner) {
             super(owner);
             build();
         }
@@ -348,7 +348,7 @@ public class CredentialDialog extends JDialog {
         protected JTextField currentTF;
         protected JTextField nextTF;
 
-        public TFKeyListener(CredentialDialog owner, JTextField currentTF, JTextField nextTF) {
+        TFKeyListener(CredentialDialog owner, JTextField currentTF, JTextField nextTF) {
             this.owner = owner;
             this.currentTF = currentTF;
             this.nextTF = nextTF;
@@ -381,7 +381,7 @@ public class CredentialDialog extends JDialog {
     }
 
     class OKAction extends AbstractAction {
-        public OKAction() {
+        OKAction() {
             putValue(NAME, tr("Authenticate"));
             putValue(SHORT_DESCRIPTION, tr("Authenticate with the supplied username and password"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
@@ -395,7 +395,7 @@ public class CredentialDialog extends JDialog {
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SHORT_DESCRIPTION, tr("Cancel authentication"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java b/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
index e53e0a1..d1b5e05 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
@@ -61,7 +61,7 @@ public class DownloadFileTask extends PleaseWaitRunnable{
          *         {@link #getCause()} method).  (A <tt>null</tt> value is
          *         permitted, and indicates that the cause is nonexistent or unknown.)
          */
-        public DownloadException(String message, Throwable cause) {
+        DownloadException(String message, Throwable cause) {
             super(message, cause);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
index ff7e370..10f3be5 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
@@ -52,9 +52,9 @@ public class DownloadPrimitivesWithReferrersTask extends PleaseWaitRunnable {
     /** Reference to the task that download requested primitives */
     private DownloadPrimitivesTask mainTask;
     /** Flag indicated that user ask for cancel this task */
-    private boolean canceled = false;
+    private boolean canceled;
     /** Reference to the task currently running */
-    private PleaseWaitRunnable currentTask = null;
+    private PleaseWaitRunnable currentTask;
 
     /**
      * Constructor
diff --git a/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java b/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
index 169ad2a..f228d95 100644
--- a/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
+++ b/src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
@@ -32,7 +32,7 @@ import org.openstreetmap.josm.tools.GBC;
 class LayerNameAndFilePathTableCell extends JPanel implements TableCellRenderer, TableCellEditor {
     private static final Color colorError = new Color(255, 197, 197);
     private static final String separator = System.getProperty("file.separator");
-    private static final String ellipsis = "…" + separator;
+    private static final String ellipsis = '…' + separator;
 
     private final JLabel lblLayerName = new JLabel();
     private final JLabel lblFilename = new JLabel("");
@@ -45,7 +45,7 @@ class LayerNameAndFilePathTableCell extends JPanel implements TableCellRenderer,
     private File value;
 
     /** constructor that sets the default on each element **/
-    public LayerNameAndFilePathTableCell() {
+    LayerNameAndFilePathTableCell() {
         setLayout(new GridBagLayout());
 
         lblLayerName.setPreferredSize(new Dimension(lblLayerName.getPreferredSize().width, 19));
@@ -216,7 +216,7 @@ class LayerNameAndFilePathTableCell extends JPanel implements TableCellRenderer,
     }
 
     private class LaunchFileChooserAction extends AbstractAction {
-        public LaunchFileChooserAction() {
+        LaunchFileChooserAction() {
             putValue(NAME, "...");
             putValue(SHORT_DESCRIPTION, tr("Launch a file chooser to select a file"));
         }
diff --git a/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java b/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java
index 78ed398..2106343 100644
--- a/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java
+++ b/src/org/openstreetmap/josm/gui/io/OpenChangesetComboBoxModel.java
@@ -18,7 +18,7 @@ import org.openstreetmap.josm.data.osm.ChangesetCacheListener;
  */
 public class OpenChangesetComboBoxModel extends DefaultComboBoxModel<Changeset> implements ChangesetCacheListener {
     private transient List<Changeset> changesets;
-    private transient Changeset selectedChangeset = null;
+    private transient Changeset selectedChangeset;
 
     protected Changeset getChangesetById(long id) {
         for (Changeset cs : changesets) {
diff --git a/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java b/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
index 9c96cbf..9093f0e 100644
--- a/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
+++ b/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java
@@ -80,7 +80,7 @@ public class RecentlyOpenedFilesMenu extends JMenu {
 
     private static class ClearAction extends AbstractAction {
 
-        public ClearAction() {
+        ClearAction() {
             super(tr("Clear"));
             putValue(SHORT_DESCRIPTION, tr("Clear the list of recently opened files"));
             putValue("help", ht("/Action/OpenRecent"));
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java b/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java
index 9934d88..6a473da 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayerInfo.java
@@ -27,7 +27,7 @@ class SaveLayerInfo implements Comparable<SaveLayerInfo> {
      * @param layer the layer. Must not be null.
      * @throws IllegalArgumentException if layer is null
      */
-    public SaveLayerInfo(AbstractModifiableLayer layer) {
+    SaveLayerInfo(AbstractModifiableLayer layer) {
         CheckParameterUtil.ensureParameterNotNull(layer, "layer");
         this.layer = layer;
         this.doCheckSaveConditions = true;
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
index 2e33a91..8fc8299 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
@@ -7,7 +7,6 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.FlowLayout;
 import java.awt.Graphics2D;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -42,6 +41,7 @@ import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.SessionSaveAsAction;
 import org.openstreetmap.josm.actions.UploadAction;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
 import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
@@ -49,12 +49,14 @@ import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.progress.SwingRenderingProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
 
 public class SaveLayersDialog extends JDialog implements TableModelListener {
-    public static enum UserAction {
+    public enum UserAction {
         /** save/upload layers was successful, proceed with operation */
         PROCEED,
         /** save/upload of layers was not successful or user canceled operation */
@@ -66,6 +68,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
     private UploadAndSaveProgressRenderer pnlUploadLayers;
 
     private SaveAndProceedAction saveAndProceedAction;
+    private SaveSessionAction saveSessionAction;
     private DiscardAndProceedAction discardAndProceedAction;
     private CancelAction cancelAction;
     private transient SaveAndUploadTask saveAndUploadTask;
@@ -91,7 +94,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
     }
 
-    private JButton saveAndProceedActionButton = null;
+    private JButton saveAndProceedActionButton;
 
     /**
      * builds the button row
@@ -100,18 +103,21 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
      */
     protected JPanel buildButtonRow() {
         JPanel pnl = new JPanel();
-        pnl.setLayout(new FlowLayout(FlowLayout.CENTER));
+        pnl.setLayout(new GridBagLayout());
 
         saveAndProceedAction = new SaveAndProceedAction();
         model.addPropertyChangeListener(saveAndProceedAction);
-        pnl.add(saveAndProceedActionButton = new JButton(saveAndProceedAction));
+        pnl.add(saveAndProceedActionButton = new JButton(saveAndProceedAction), GBC.std(0, 0).insets(5, 5, 0, 0).fill(GBC.HORIZONTAL));
+
+        saveSessionAction = new SaveSessionAction();
+        pnl.add(new JButton(saveSessionAction), GBC.std(1, 0).insets(5, 5, 5, 0).fill(GBC.HORIZONTAL));
 
         discardAndProceedAction = new DiscardAndProceedAction();
         model.addPropertyChangeListener(discardAndProceedAction);
-        pnl.add(new JButton(discardAndProceedAction));
+        pnl.add(new JButton(discardAndProceedAction), GBC.std(0, 1).insets(5, 5, 0, 5).fill(GBC.HORIZONTAL));
 
         cancelAction = new CancelAction();
-        pnl.add(new JButton(cancelAction));
+        pnl.add(new JButton(cancelAction), GBC.std(1, 1).insets(5, 5, 5, 5).fill(GBC.HORIZONTAL));
 
         JPanel pnl2 = new JPanel();
         pnl2.setLayout(new BorderLayout());
@@ -195,7 +201,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
             add(lstLayers, gc);
         }
 
-        public LayerListWarningMessagePanel(String msg, List<SaveLayerInfo> infos) {
+        LayerListWarningMessagePanel(String msg, List<SaveLayerInfo> infos) {
             build();
             lblMessage.setText(msg);
             lstLayers.setListData(infos.toArray(new SaveLayerInfo[0]));
@@ -300,7 +306,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close this dialog and resume editing in JOSM"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
@@ -314,10 +320,6 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
             closeDialog();
         }
 
-        protected void cancelWhenInSaveAndUploadingMode() {
-            cancelSafeAndUploadTask();
-        }
-
         public void cancel() {
             switch(model.getMode()) {
             case EDITING_DATA: cancelWhenInEditingModel(); break;
@@ -332,7 +334,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
     }
 
     class DiscardAndProceedAction extends AbstractAction  implements PropertyChangeListener {
-        public DiscardAndProceedAction() {
+        DiscardAndProceedAction() {
             initForDiscardAndExit();
         }
 
@@ -366,6 +368,21 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
         }
     }
 
+    class SaveSessionAction extends SessionSaveAsAction {
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            try {
+                saveSession();
+                setUserAction(UserAction.PROCEED);
+                closeDialog();
+            } catch (UserCancelException ignore) {
+                if (Main.isTraceEnabled()) {
+                    Main.trace(ignore.getMessage());
+                }
+            }
+        }
+    }
+
     final class SaveAndProceedAction extends AbstractAction implements PropertyChangeListener {
         private static final int is = 24; // icon size
         private static final String BASE_ICON = "BASE_ICON";
@@ -374,7 +391,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
         private final transient Image saveDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
         private final transient Image upldDis = new BufferedImage(is, is, BufferedImage.TYPE_4BYTE_ABGR);
 
-        public SaveAndProceedAction() {
+        SaveAndProceedAction() {
             // get disabled versions of icons
             new JLabel(ImageProvider.get("save")).getDisabledIcon().paintIcon(new JPanel(), saveDis.getGraphics(), 0, 0);
             new JLabel(ImageProvider.get("upload")).getDisabledIcon().paintIcon(new JPanel(), upldDis.getGraphics(), 0, 0);
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java b/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java
index f50d33a..71ac724 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersTable.java
@@ -10,7 +10,7 @@ import javax.swing.JTable;
 import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
 
 class SaveLayersTable extends JTable implements PropertyChangeListener {
-    public SaveLayersTable(SaveLayersModel model) {
+    SaveLayersTable(SaveLayersModel model) {
         super(model, new SaveLayersTableColumnModel());
         putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
         super.setRowHeight(39);
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java b/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java
index 426e957..70520ab 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java
@@ -27,7 +27,7 @@ class SaveLayersTableColumnModel extends DefaultTableColumnModel {
         /**
          * Constructs a new {@code RecommendedActionsTableCell}.
          */
-        public RecommendedActionsTableCell() {
+        RecommendedActionsTableCell() {
             pnlEmpty.setPreferredSize(new Dimension(1, 19));
             needsUpload.setPreferredSize(new Dimension(needsUpload.getPreferredSize().width, 19));
             needsSave.setPreferredSize(new Dimension(needsSave.getPreferredSize().width, 19));
@@ -40,27 +40,29 @@ class SaveLayersTableColumnModel extends DefaultTableColumnModel {
             SaveLayerInfo info = (SaveLayerInfo) value;
             StringBuilder sb = new StringBuilder(24);
             sb.append("<html>");
-            if (info.getLayer().requiresUploadToServer() && !info.getLayer().isUploadDiscouraged()) {
-                panel.add(needsUpload, defaultCellStyle);
-                sb.append(tr("Layer ''{0}'' has modifications which should be uploaded to the server.", info.getName()));
+            if (info != null) {
+                if (info.getLayer().requiresUploadToServer() && !info.getLayer().isUploadDiscouraged()) {
+                    panel.add(needsUpload, defaultCellStyle);
+                    sb.append(tr("Layer ''{0}'' has modifications which should be uploaded to the server.", info.getName()));
 
-            } else {
-                panel.add(pnlEmpty, defaultCellStyle);
-                if (info.getLayer().requiresUploadToServer()) {
-                    sb.append(tr("Layer ''{0}'' has modifications which are discouraged to be uploaded.", info.getName()));
                 } else {
-                    sb.append(tr("Layer ''{0}'' has no modifications to be uploaded.", info.getName()));
+                    panel.add(pnlEmpty, defaultCellStyle);
+                    if (info.getLayer().requiresUploadToServer()) {
+                        sb.append(tr("Layer ''{0}'' has modifications which are discouraged to be uploaded.", info.getName()));
+                    } else {
+                        sb.append(tr("Layer ''{0}'' has no modifications to be uploaded.", info.getName()));
+                    }
                 }
-            }
-            sb.append("<br/>");
+                sb.append("<br/>");
 
-            if (info.getLayer().requiresSaveToFile()) {
-                panel.add(needsSave, defaultCellStyle);
-                sb.append(tr("Layer ''{0}'' has modifications which should be saved to its associated file ''{1}''.",
-                        info.getName(), info.getFile().toString()));
-            } else {
-                panel.add(pnlEmpty, defaultCellStyle);
-                sb.append(tr("Layer ''{0}'' has no modifications to be saved.", info.getName()));
+                if (info.getLayer().requiresSaveToFile()) {
+                    panel.add(needsSave, defaultCellStyle);
+                    sb.append(tr("Layer ''{0}'' has modifications which should be saved to its associated file ''{1}''.",
+                            info.getName(), info.getFile().toString()));
+                } else {
+                    panel.add(pnlEmpty, defaultCellStyle);
+                    sb.append(tr("Layer ''{0}'' has no modifications to be saved.", info.getName()));
+                }
             }
             sb.append("</html>");
             panel.setToolTipText(sb.toString());
@@ -71,7 +73,7 @@ class SaveLayersTableColumnModel extends DefaultTableColumnModel {
     /**
      * Constructs a new {@code SaveLayersTableColumnModel}.
      */
-    public SaveLayersTableColumnModel() {
+    SaveLayersTableColumnModel() {
         build();
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java b/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
index 4537314..a0824b6 100644
--- a/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java
@@ -95,7 +95,7 @@ public class TagSettingsPanel extends JPanel implements TableModelListener {
         if (created_by == null || created_by.isEmpty()) {
             tags.put("created_by", agent);
         } else if (!created_by.contains(agent)) {
-            tags.put("created_by", created_by + ";" + agent);
+            tags.put("created_by", created_by + ';' + agent);
         }
         pnlTagEditor.getModel().initFromTags(tags);
     }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadAndSaveProgressRenderer.java b/src/org/openstreetmap/josm/gui/io/UploadAndSaveProgressRenderer.java
index 1d3b578..2a55dc0 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadAndSaveProgressRenderer.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadAndSaveProgressRenderer.java
@@ -23,7 +23,7 @@ class UploadAndSaveProgressRenderer extends JPanel implements ProgressRenderer,
     /**
      * Constructs a new {@code UploadAndSaveProgressRenderer}.
      */
-    public UploadAndSaveProgressRenderer() {
+    UploadAndSaveProgressRenderer() {
         build();
         // initially not visible
         setVisible(false);
diff --git a/src/org/openstreetmap/josm/gui/io/UploadDialog.java b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
index f0ccdc6..6b7ac6c 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
@@ -380,7 +380,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
      *
      */
     class UploadAction extends AbstractAction {
-        public UploadAction() {
+        UploadAction() {
             putValue(NAME, tr("Upload Changes"));
             putValue(SMALL_ICON, ImageProvider.get("upload"));
             putValue(SHORT_DESCRIPTION, tr("Upload the changed primitives"));
@@ -503,7 +503,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
      *
      */
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Cancel the upload and resume editing"));
@@ -567,7 +567,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
         setTitle(tr("Upload to ''{0}''", url));
     }
 
-    private String getLastChangesetTagFromHistory(String historyKey, List<String> def) {
+    private static String getLastChangesetTagFromHistory(String historyKey, List<String> def) {
         Collection<String> history = Main.pref.getCollection(historyKey, def);
         int age = (int) (System.currentTimeMillis() / 1000 - Main.pref.getInteger(BasicUploadSettingsPanel.HISTORY_LAST_USED_KEY, 0));
         if (age < Main.pref.getInteger(BasicUploadSettingsPanel.HISTORY_MAX_AGE_KEY, 4 * 3600 * 1000) && history != null && !history.isEmpty()) {
diff --git a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
index 3c7b5a9..03e4b7c 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
@@ -42,8 +42,8 @@ import org.openstreetmap.josm.tools.ImageProvider;
  *
  */
 public class UploadPrimitivesTask extends AbstractUploadTask {
-    private boolean uploadCanceled = false;
-    private Exception lastException = null;
+    private boolean uploadCanceled;
+    private Exception lastException;
     private APIDataSet toUpload;
     private OsmServerWriter writer;
     private OsmDataLayer layer;
diff --git a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
index dede9a2..659709e 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
@@ -183,11 +183,11 @@ public class UploadSelectionDialog extends JDialog {
             setCellRenderer(new OsmPrimitivRenderer());
         }
 
-        public OsmPrimitiveList() {
+        OsmPrimitiveList() {
             this(new OsmPrimitiveListModel());
         }
 
-        public OsmPrimitiveList(OsmPrimitiveListModel model) {
+        OsmPrimitiveList(OsmPrimitiveListModel model) {
             super(model);
             init();
         }
@@ -256,7 +256,7 @@ public class UploadSelectionDialog extends JDialog {
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Cancel uploading"));
             putValue(Action.NAME, tr("Cancel"));
             putValue(Action.SMALL_ICON, ImageProvider.get("", "cancel"));
@@ -274,7 +274,7 @@ public class UploadSelectionDialog extends JDialog {
     }
 
     class ContinueAction extends AbstractAction implements ListSelectionListener {
-        public ContinueAction() {
+        ContinueAction() {
             putValue(Action.SHORT_DESCRIPTION, tr("Continue uploading"));
             putValue(Action.NAME, tr("Continue"));
             putValue(Action.SMALL_ICON, ImageProvider.get("", "upload"));
diff --git a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
index c126b5c..8973145 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
@@ -60,7 +60,7 @@ public class UploadStrategySelectionPanel extends JPanel implements PropertyChan
     private JRadioButton rbUseMultipleChangesets;
     private JMultilineLabel lblMultiChangesetPoliciesHeader;
 
-    private long numUploadedObjects = 0;
+    private long numUploadedObjects;
 
     /**
      * Constructs a new {@code UploadStrategySelectionPanel}.
diff --git a/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java b/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
index bc64e7c..c2cdbe6 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
@@ -146,7 +146,7 @@ public class UploadedObjectsSummaryPanel extends JPanel {
         /**
          * Constructs a new {@code PrimitiveList}.
          */
-        public PrimitiveList() {
+        PrimitiveList() {
             super(new PrimitiveListModel());
         }
 
@@ -164,11 +164,11 @@ public class UploadedObjectsSummaryPanel extends JPanel {
         /**
          * Constructs a new {@code PrimitiveListModel}.
          */
-        public PrimitiveListModel() {
+        PrimitiveListModel() {
             primitives = new ArrayList<>();
         }
 
-        public PrimitiveListModel(List<OsmPrimitive> primitives) {
+        PrimitiveListModel(List<OsmPrimitive> primitives) {
             setPrimitives(primitives);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
index 7610b51..be51cac 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractCachedTileSourceLayer.java
@@ -29,7 +29,7 @@ public abstract class AbstractCachedTileSourceLayer extends AbstractTileSourceLa
 
     private static final String PREFERENCE_PREFIX = "imagery.cache.";
 
-    private static volatile TileLoaderFactory loaderFactoryOverride = null;
+    private static volatile TileLoaderFactory loaderFactoryOverride;
 
     /**
      * how many object on disk should be stored for TMS region in MB. 500 MB is default value
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
index b924c20..bc6e6bc 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
@@ -139,20 +139,14 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
      */
     public static final IntegerProperty ZOOM_OFFSET = new IntegerProperty(PREFERENCE_PREFIX + ".zoom_offset", 0);
 
-    /**
-     * use fairly small memory cache, as cached objects are quite big, as they contain BufferedImages
-     */
-    public static final IntegerProperty MEMORY_CACHE_SIZE = new IntegerProperty(PREFERENCE_PREFIX + ".cache.max_objects_ram",
-            (int) Math.max(200,  200 * Math.pow(4, ZOOM_OFFSET.get())));
-
     /*
      *  use MemoryTileCache instead of tileLoader JCS cache, as tileLoader caches only content (byte[] of image)
      *  and MemoryTileCache caches whole Tile. This gives huge performance improvement when a lot of tiles are visible
      *  in MapView (for example - when limiting min zoom in imagery)
      *
-     *  Use static instance so memory is shared between layers to prevent out of memory exceptions, when user is working with many layers
+     *  Use per-layer tileCache instance, as the more layers there are, the more tiles needs to be cached
      */
-    protected static TileCache tileCache = new MemoryTileCache(MEMORY_CACHE_SIZE.get());
+    protected TileCache tileCache; // initialized together with tileSource
     protected AbstractTMSTileSource tileSource;
     protected TileLoader tileLoader;
 
@@ -206,6 +200,8 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
 
         if (tileLoader == null)
             tileLoader = new OsmTileLoader(this, headers);
+
+        tileCache = new MemoryTileCache(estimateTileCacheSize());
     }
 
     @Override
@@ -318,7 +314,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
 
         private String getSizeString(int size) {
             StringBuilder ret = new StringBuilder();
-            return ret.append(size).append("x").append(size).toString();
+            return ret.append(size).append('x').append(size).toString();
         }
 
         private JTextField createTextField(String text) {
@@ -349,17 +345,17 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
                         {"Tile name", clickedTile.getKey()},
                         {"Tile url", url},
                         {"Tile size", getSizeString(clickedTile.getTileSource().getTileSize()) },
-                        {"Tile display size", new StringBuilder().append(displaySize.width).append("x").append(displaySize.height).toString()},
+                        {"Tile display size", new StringBuilder().append(displaySize.width).append('x').append(displaySize.height).toString()},
                 };
 
                 for (String[] entry: content) {
-                    panel.add(new JLabel(tr(entry[0]) + ":"), GBC.std());
+                    panel.add(new JLabel(tr(entry[0]) + ':'), GBC.std());
                     panel.add(GBC.glue(5, 0), GBC.std());
                     panel.add(createTextField(entry[1]), GBC.eol().fill(GBC.HORIZONTAL));
                 }
 
                 for (Entry<String, String> e: clickedTile.getMetadata().entrySet()) {
-                    panel.add(new JLabel(tr("Metadata ") + tr(e.getKey()) + ":"), GBC.std());
+                    panel.add(new JLabel(tr("Metadata ") + tr(e.getKey()) + ':'), GBC.std());
                     panel.add(GBC.glue(5, 0), GBC.std());
                     String value = e.getValue();
                     if ("lastModification".equals(e.getKey()) || "expirationTime".equals(e.getKey())) {
@@ -376,7 +372,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class AutoZoomAction extends AbstractAction implements LayerAction {
-        public AutoZoomAction() {
+        AutoZoomAction() {
             super(tr("Auto Zoom"));
         }
 
@@ -399,7 +395,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class AutoLoadTilesAction extends AbstractAction implements LayerAction {
-        public AutoLoadTilesAction() {
+        AutoLoadTilesAction() {
             super(tr("Auto load tiles"));
         }
 
@@ -421,7 +417,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class LoadAllTilesAction extends AbstractAction {
-        public LoadAllTilesAction() {
+        LoadAllTilesAction() {
             super(tr("Load All Tiles"));
         }
 
@@ -433,7 +429,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class LoadErroneusTilesAction extends AbstractAction {
-        public LoadErroneusTilesAction() {
+        LoadErroneusTilesAction() {
             super(tr("Load All Error Tiles"));
         }
 
@@ -445,7 +441,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class ZoomToNativeLevelAction extends AbstractAction {
-        public ZoomToNativeLevelAction() {
+        ZoomToNativeLevelAction() {
             super(tr("Zoom to native resolution"));
         }
 
@@ -458,7 +454,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private class ZoomToBestAction extends AbstractAction {
-        public ZoomToBestAction() {
+        ZoomToBestAction() {
             super(tr("Change resolution"));
         }
 
@@ -472,7 +468,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
      * Simple class to keep clickedTile within hookUpMapView
      */
     private static final class TileHolder {
-        private Tile t = null;
+        private Tile t;
 
         public Tile getTile() {
             return t;
@@ -486,7 +482,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     private class BooleanButtonModel extends DefaultButtonModel {
         private Field field;
 
-        public BooleanButtonModel(Field field) {
+        BooleanButtonModel(Field field) {
             this.field = field;
         }
 
@@ -505,15 +501,17 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
      */
     @Override
     public void hookUpMapView() {
+        // this needs to be here and not in constructor to allow empty TileSource class construction
+        // using SessionWriter
         this.tileSource = getTileSource(info);
         if (this.tileSource == null) {
             throw new IllegalArgumentException(tr("Failed to create tile source"));
         }
 
+        super.hookUpMapView();
         projectionChanged(null, Main.getProjection()); // check if projection is supported
         initTileSource(this.tileSource);
 
-        ;
         // keep them final here, so we avoid namespace clutter in the class
         final JPopupMenu tileOptionMenu = new JPopupMenu();
         final TileHolder clickedTileHolder = new TileHolder();
@@ -660,6 +658,25 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
         Main.map.repaint(500);
     }
 
+    @Override
+    protected long estimateMemoryUsage() {
+        return 4L * tileSource.getTileSize() * tileSource.getTileSize() * estimateTileCacheSize();
+    }
+
+    protected int estimateTileCacheSize() {
+        int height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
+        int width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
+        int tileSize = 256; // default tile size
+        if (tileSource != null) {
+            tileSize = tileSource.getTileSize();
+        }
+        // as we can see part of the tile at the top and at the bottom, use Math.ceil(...) + 1 to accommodate for that
+        int visibileTiles = (int) (Math.ceil((double) height / tileSize + 1) * Math.ceil((double) width / tileSize + 1));
+        // add 10% for tiles from different zoom levels
+        return (int) Math.ceil(
+                Math.pow(2d, ZOOM_OFFSET.get()) * visibileTiles // use offset to decide, how many tiles are visible
+                * 2);
+    }
     /**
      * Checks zoom level against settings
      * @param maxZoomLvl zoom level to check
@@ -763,7 +780,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     public boolean zoomIncreaseAllowed() {
         boolean zia = currentZoomLevel < this.getMaxZoomLvl();
         if (Main.isDebugEnabled()) {
-            Main.debug("zoomIncreaseAllowed(): " + zia + " " + currentZoomLevel + " vs. " + this.getMaxZoomLvl());
+            Main.debug("zoomIncreaseAllowed(): " + zia + ' ' + currentZoomLevel + " vs. " + this.getMaxZoomLvl());
         }
         return zia;
     }
@@ -859,7 +876,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
      * already in the cache.
      */
     private Tile getTile(int x, int y, int zoom) {
-        if (x < 0 || x >= tileSource.getTileXMax(zoom) || y < 0 || y >= tileSource.getTileYMax(zoom))
+        if (x < 0 || x > tileSource.getTileXMax(zoom) || y < 0 || y > tileSource.getTileYMax(zoom))
             return null;
         return tileCache.getTile(tileSource, x, y, zoom);
     }
@@ -1053,10 +1070,10 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
             StringBuilder ret = new StringBuilder();
             for (String s: text.split(" ")) {
                 if (g.getFontMetrics().stringWidth(line.toString() + s) > tileSource.getTileSize()) {
-                    ret.append(line).append("\n");
+                    ret.append(line).append('\n');
                     line.setLength(0);
                 }
-                line.append(s).append(" ");
+                line.append(s).append(' ');
             }
             ret.append(line);
             textToDraw = ret.toString();
@@ -1235,7 +1252,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
                 for (int y = y0; y <= y1; y++) {
                     Tile t;
                     if (create) {
-                        t = getOrCreateTile(x, y , zoom);
+                        t = getOrCreateTile(x, y, zoom);
                     } else {
                         t = getTile(x, y, zoom);
                     }
@@ -1298,9 +1315,9 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
     }
 
     private static class TileSetInfo {
-        public boolean hasVisibleTiles = false;
-        public boolean hasOverzoomedTiles = false;
-        public boolean hasLoadingTiles = false;
+        public boolean hasVisibleTiles;
+        public boolean hasOverzoomedTiles;
+        public boolean hasLoadingTiles;
     }
 
     private static TileSetInfo getTileSetInfo(TileSet ts) {
@@ -1328,7 +1345,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
         private final int minZoom, maxZoom;
         private final TileSet[] tileSets;
         private final TileSetInfo[] tileSetInfos;
-        public DeepTileSet(EastNorth topLeft, EastNorth botRight, int minZoom, int maxZoom) {
+        DeepTileSet(EastNorth topLeft, EastNorth botRight, int minZoom, int maxZoom) {
             this.topLeft = topLeft;
             this.botRight = botRight;
             this.minZoom = minZoom;
@@ -1510,9 +1527,10 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
             myDrawString(g, tr("Display zoom: {0}", displayZoomLevel), 50, 155);
             myDrawString(g, tr("Pixel scale: {0}", getScaleFactor(currentZoomLevel)), 50, 170);
             myDrawString(g, tr("Best zoom: {0}", getBestZoom()), 50, 185);
+            myDrawString(g, tr("Estimated cache size: {0}", estimateTileCacheSize()), 50, 200);
             if (tileLoader instanceof TMSCachedTileLoader) {
                 TMSCachedTileLoader cachedTileLoader = (TMSCachedTileLoader) tileLoader;
-                int offset = 185;
+                int offset = 200;
                 for (String part: cachedTileLoader.getStats().split("\n")) {
                     myDrawString(g, tr("Cache stats: {0}", part), 50, offset += 15);
                 }
@@ -1527,7 +1545,7 @@ public abstract class AbstractTileSourceLayer extends ImageryLayer implements Im
      */
     private Tile getTileForPixelpos(int px, int py) {
         if (Main.isDebugEnabled()) {
-            Main.debug("getTileForPixelpos("+px+", "+py+")");
+            Main.debug("getTileForPixelpos("+px+", "+py+')');
         }
         MapView mv = Main.map.mapView;
         Point clicked = new Point(px, py);
diff --git a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
index 25ca961..908320f 100644
--- a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
@@ -99,7 +99,7 @@ public class GpxLayer extends Layer {
 
             if (earliestDate.equals(latestDate)) {
                 DateFormat tf = DateUtils.getTimeFormat(DateFormat.SHORT);
-                ts += earliestDate + " ";
+                ts += earliestDate + ' ';
                 ts += tf.format(bounds[0]) + " - " + tf.format(bounds[1]);
             } else {
                 DateFormat dtf = DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM);
@@ -184,6 +184,7 @@ public class GpxLayer extends Layer {
         return new Action[] {
                 LayerListDialog.getInstance().createShowHideLayerAction(),
                 LayerListDialog.getInstance().createDeleteLayerAction(),
+                LayerListDialog.getInstance().createMergeLayerAction(this),
                 SeparatorLayerAction.INSTANCE,
                 new LayerSaveAction(this),
                 new LayerSaveAsAction(this),
@@ -192,7 +193,7 @@ public class GpxLayer extends Layer {
                 new ImportImagesAction(this),
                 new ImportAudioAction(this),
                 new MarkersFromNamedPointsAction(this),
-                new ConvertToDataLayerAction(this),
+                new ConvertToDataLayerAction.FromGpxLayer(this),
                 new DownloadAlongTrackAction(data),
                 new DownloadWmsAlongTrackAction(data),
                 SeparatorLayerAction.INSTANCE,
diff --git a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
index bd15a39..2598390 100644
--- a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
@@ -10,6 +10,7 @@ import java.awt.Component;
 import java.awt.Font;
 import java.awt.Graphics2D;
 import java.awt.GridBagLayout;
+import java.awt.Transparency;
 import java.awt.event.ActionEvent;
 import java.awt.font.FontRenderContext;
 import java.awt.font.LineBreakMeasurer;
@@ -24,7 +25,7 @@ import java.awt.image.ShortLookupTable;
 import java.text.AttributedCharacterIterator;
 import java.text.AttributedString;
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -73,8 +74,8 @@ public abstract class ImageryLayer extends Layer {
 
     protected Icon icon;
 
-    protected double dx = 0.0;
-    protected double dy = 0.0;
+    protected double dx;
+    protected double dy;
 
     protected GammaImageProcessor gammaImageProcessor = new GammaImageProcessor();
 
@@ -150,7 +151,7 @@ public abstract class ImageryLayer extends Layer {
                 panel.add(new UrlLabel(url), GBC.eol().insets(2, 5, 10, 0));
             }
             if (dx != 0 || dy != 0) {
-                panel.add(new JLabel(tr("Offset: ") + dx + ";" + dy), GBC.eol().insets(0, 5, 10, 0));
+                panel.add(new JLabel(tr("Offset: ") + dx + ';' + dy), GBC.eol().insets(0, 5, 10, 0));
             }
         }
         return panel;
@@ -264,6 +265,7 @@ public abstract class ImageryLayer extends Layer {
 
         /**
          * Returns the currently set gamma value.
+         * @return the currently set gamma value
          */
         public double getGamma() {
             return gamma;
@@ -271,6 +273,7 @@ public abstract class ImageryLayer extends Layer {
 
         /**
          * Sets a new gamma value, {@code 1} stands for no correction.
+         * @param gamma new gamma value
          */
         public void setGamma(double gamma) {
             this.gamma = gamma;
@@ -279,28 +282,33 @@ public abstract class ImageryLayer extends Layer {
             }
         }
 
-        private LookupOp getOp(int bands) {
-            if (gamma == 1) {
-                return null;
-            } else if (bands == 3) {
-                return op3;
-            } else if (bands == 4) {
-                return op4;
-            } else {
-                return null;
-            }
-        }
-
         @Override
         public BufferedImage process(BufferedImage image) {
-            final LookupOp op = getOp(image.getRaster().getNumBands());
-            final BufferedImage to = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
-            return op == null ? image : op.filter(image, to);
+            if (gamma == 1) {
+                return image;
+            }
+            try {
+                final int bands = image.getRaster().getNumBands();
+                if (image.getType() != BufferedImage.TYPE_CUSTOM && bands == 3) {
+                    return op3.filter(image, null);
+                } else if (image.getType() != BufferedImage.TYPE_CUSTOM && bands == 4) {
+                    return op4.filter(image, null);
+                }
+            } catch (IllegalArgumentException ignore) {
+                if (Main.isTraceEnabled()) {
+                    Main.trace(ignore.getMessage());
+                }
+            }
+            final int type = image.getTransparency() == Transparency.OPAQUE ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
+            final BufferedImage to = new BufferedImage(image.getWidth(), image.getHeight(), type);
+            to.getGraphics().drawImage(image, 0, 0, null);
+            return process(to);
         }
     }
 
     /**
      * Returns the currently set gamma value.
+     * @return the currently set gamma value
      */
     public double getGamma() {
         return gammaImageProcessor.getGamma();
@@ -308,6 +316,7 @@ public abstract class ImageryLayer extends Layer {
 
     /**
      * Sets a new gamma value, {@code 1} stands for no correction.
+     * @param gamma new gamma value
      */
     public void setGamma(double gamma) {
         gammaImageProcessor.setGamma(gamma);
@@ -395,7 +404,7 @@ public abstract class ImageryLayer extends Layer {
                 g.drawString(message, 5, (int) drawPosY);
             } else {
                 // Draw message on several lines
-                Map<TextAttribute, Object> map = new Hashtable<TextAttribute, Object>();
+                Map<TextAttribute, Object> map = new HashMap<TextAttribute, Object>();
                 map.put(TextAttribute.FAMILY, "Serif");
                 map.put(TextAttribute.SIZE, new Float(18.0));
                 AttributedString vanGogh = new AttributedString(message, map);
diff --git a/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java b/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
index 59a3290..50eb9c5 100644
--- a/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
+++ b/src/org/openstreetmap/josm/gui/layer/JumpToMarkerActions.java
@@ -48,7 +48,7 @@ public final class JumpToMarkerActions {
         private final transient Shortcut multikeyShortcut;
         private transient WeakReference<Layer> lastLayer;
 
-        public JumpToMarker(JumpToMarkerLayer layer, Shortcut shortcut) {
+        JumpToMarker(JumpToMarkerLayer layer, Shortcut shortcut) {
             this.layer = (Layer) layer;
             this.multikeyShortcut = shortcut;
             this.multikeyShortcut.setAccelerator(this);
diff --git a/src/org/openstreetmap/josm/gui/layer/Layer.java b/src/org/openstreetmap/josm/gui/layer/Layer.java
index e16587b..a1ac612 100644
--- a/src/org/openstreetmap/josm/gui/layer/Layer.java
+++ b/src/org/openstreetmap/josm/gui/layer/Layer.java
@@ -108,7 +108,7 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
      * The layer should be handled as a background layer in automatic handling
      *
      */
-    private boolean background = false;
+    private boolean background;
 
     /**
      * The name of this layer.
@@ -137,8 +137,30 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
      * Note that Main.map is null as long as no layer has been added, so do
      * not execute code in the constructor, that assumes Main.map.mapView is
      * not null. Instead override this method.
+     *
+     * This implementation provides check, if JOSM will be able to use Layer. Layers
+     * using a lot of memory, which do know in advance, how much memory they use, should
+     * override {@link #estimateMemoryUsage() estimateMemoryUsage} method and give a hint.
+     *
+     * This allows for preemptive warning message for user, instead of failing later on
+     *
+     * Remember to call {@code super.hookUpMapView()} when overriding this method
      */
     public void hookUpMapView() {
+        // calculate total memory needed for all layers
+        long memoryBytesRequired = 50 * 1024 * 1024; // assumed minimum JOSM memory footprint
+        if (Main.map != null && Main.map.mapView != null) {
+            for (Layer layer: Main.map.mapView.getAllLayers()) {
+                memoryBytesRequired += layer.estimateMemoryUsage();
+            }
+            if (memoryBytesRequired >  Runtime.getRuntime().maxMemory()) {
+                throw new IllegalArgumentException(
+                        tr("To add another layer you need to allocate at least {0,number,#}MB memory to JOSM using -Xmx{0,number,#}M "
+                        + "option (see http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+                        + "Currently you have {1,number,#}MB memory allocated for JOSM",
+                        memoryBytesRequired / 1024 / 1024, Runtime.getRuntime().maxMemory() / 1024 / 1024));
+            }
+        }
     }
 
     /**
@@ -151,6 +173,7 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
     /**
      * Return a representative small image for this layer. The image must not
      * be larger than 64 pixel in any dimension.
+     * @return layer icon
      */
     public abstract Icon getIcon();
 
@@ -159,6 +182,7 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
      * @param ignoreCustom Custom color should return null, as no default color
      *      is used. When this is true, then even for custom coloring the base
      *      color is returned - mainly for layer internal use.
+     * @return layer color
      */
     public Color getColor(boolean ignoreCustom) {
         return null;
@@ -202,8 +226,8 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
      * menu component than JMenuItem or when it supports multiple layers. Actions that support multiple layers should also
      * have correct equals implementation.
      *
-     * Use SeparatorLayerAction.INSTANCE instead of new JSeparator
-     *
+     * Use {@link SeparatorLayerAction#INSTANCE} instead of new JSeparator
+     * @return menu actions for this layer
      */
     public abstract Action[] getMenuEntries();
 
@@ -387,7 +411,7 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
      * @return True if projection is supported for this layer
      */
     public boolean isProjectionSupported(Projection proj) {
-        return true;
+        return proj != null;
     }
 
     /**
@@ -506,4 +530,11 @@ public abstract class Layer implements Destroyable, MapViewPaintable, Projection
     public File createAndOpenSaveFileChooser() {
         return SaveActionBase.createAndOpenSaveFileChooser(tr("Save Layer"), "lay");
     }
+
+    /**
+     * @return bytes that the tile will use. Needed for resource management
+     */
+    protected long estimateMemoryUsage() {
+        return 0;
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
index 240b6c5..b82dd11 100644
--- a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
@@ -179,7 +179,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener
 
     @Override
     public String getToolTipText() {
-        return noteData.getNotes().size() + " " + tr("Notes");
+        return noteData.getNotes().size() + ' ' + tr("Notes");
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index 37ca127..5dfa0dd 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Pattern;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -62,6 +63,7 @@ import org.openstreetmap.josm.data.osm.DatasetConsistencyTest;
 import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
@@ -82,10 +84,12 @@ import org.openstreetmap.josm.gui.io.AbstractIOTask;
 import org.openstreetmap.josm.gui.io.AbstractUploadDialog;
 import org.openstreetmap.josm.gui.io.UploadDialog;
 import org.openstreetmap.josm.gui.io.UploadLayerTask;
+import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.FilteredCollection;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageOverlay;
@@ -106,8 +110,8 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
     /** Property used to know if this layer has to be uploaded */
     public static final String REQUIRES_UPLOAD_TO_SERVER_PROP = OsmDataLayer.class.getName() + ".requiresUploadToServer";
 
-    private boolean requiresSaveToFile = false;
-    private boolean requiresUploadToServer = false;
+    private boolean requiresSaveToFile;
+    private boolean requiresUploadToServer;
     private boolean isChanged = true;
     private int highlightUpdateCount;
 
@@ -134,7 +138,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
     }
 
     /** the global counter for created data layers */
-    private static int dataLayerCounter = 0;
+    private static int dataLayerCounter;
 
     /**
      * Replies a new unique name for a data layer
@@ -243,7 +247,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
      * @return background color for downloaded areas. Black by default
      */
     public static Color getBackgroundColor() {
-        return Main.pref.getColor(marktr("background"), Color.BLACK);
+        return Main.pref != null ? Main.pref.getColor(marktr("background"), Color.BLACK) : Color.BLACK;
     }
 
     /**
@@ -251,7 +255,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
      * @return background color for non-downloaded areas. Yellow by default
      */
     public static Color getOutsideColor() {
-        return Main.pref.getColor(marktr("outside downloaded area"), Color.YELLOW);
+        return Main.pref != null ? Main.pref.getColor(marktr("outside downloaded area"), Color.YELLOW) : Color.YELLOW;
     }
 
     /**
@@ -278,6 +282,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
      */
     public OsmDataLayer(final DataSet data, final String name, final File associatedFile) {
         super(name);
+        CheckParameterUtil.ensureParameterNotNull(data, "data");
         this.data = data;
         this.setAssociatedFile(associatedFile);
         conflicts = new ConflictCollection();
@@ -439,8 +444,8 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
     @Override
     public boolean isMergable(final Layer other) {
-        // isUploadDiscouraged commented to allow merging between normal layers and discouraged layers with a warning (see #7684)
-        return other instanceof OsmDataLayer; // && (isUploadDiscouraged() == ((OsmDataLayer)other).isUploadDiscouraged());
+        // allow merging between normal layers and discouraged layers with a warning (see #7684)
+        return other instanceof OsmDataLayer;
     }
 
     @Override
@@ -486,17 +491,17 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
         String nodeText = trn("{0} node", "{0} nodes", counter.nodes, counter.nodes);
         if (counter.deletedNodes > 0) {
-            nodeText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedNodes, counter.deletedNodes)+")";
+            nodeText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedNodes, counter.deletedNodes)+')';
         }
 
         String wayText = trn("{0} way", "{0} ways", counter.ways, counter.ways);
         if (counter.deletedWays > 0) {
-            wayText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedWays, counter.deletedWays)+")";
+            wayText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedWays, counter.deletedWays)+')';
         }
 
         String relationText = trn("{0} relation", "{0} relations", counter.relations, counter.relations);
         if (counter.deletedRelations > 0) {
-            relationText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedRelations, counter.deletedRelations)+")";
+            relationText += " ("+trn("{0} deleted", "{0} deleted", counter.deletedRelations, counter.deletedRelations)+')';
         }
 
         p.add(new JLabel(tr("{0} consists of:", getName())), GBC.eol());
@@ -558,7 +563,16 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
     }
 
     private static void waysToGpxData(Collection<Way> ways, GpxData gpxData, Set<Node> doneNodes) {
-        for (Way w : ways) {
+        /* When the dataset has been obtained from a gpx layer and now is being converted back,
+         * the ways have negative ids. The first created way corresponds to the first gpx segment,
+         * and has the highest id (i.e., closest to zero).
+         * Thus, sorting by OsmPrimitive#getUniqueId gives the original order.
+         * (Only works if the data layer has not been saved to and been loaded from an osm file before.)
+         */
+        final List<Way> sortedWays = new ArrayList<>(ways);
+        Collections.sort(sortedWays, new OsmPrimitiveComparator(true, false)); // sort by OsmPrimitive#getUniqueId ascending
+        Collections.reverse(sortedWays); // sort by OsmPrimitive#getUniqueId descending
+        for (Way w : sortedWays) {
             if (!w.isUsable()) {
                 continue;
             }
@@ -729,7 +743,14 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.main.addLayer(new GpxLayer(toGpxData(), tr("Converted from: {0}", getName())));
+            final GpxData data = toGpxData();
+            final GpxLayer gpxLayer = new GpxLayer(data, tr("Converted from: {0}", getName()));
+            final String filename = getAssociatedFile().getName().replaceAll(Pattern.quote(".gpx.osm") + "$", "") + ".gpx";
+            gpxLayer.setAssociatedFile(new File(getAssociatedFile().getParentFile(), filename));
+            Main.main.addLayer(gpxLayer);
+            if (Main.pref.getBoolean("marker.makeautomarkers", true) && !data.waypoints.isEmpty()) {
+                Main.main.addLayer(new MarkerLayer(data, tr("Converted from: {0}", getName()), null, gpxLayer));
+            }
             Main.main.removeLayer(OsmDataLayer.this);
         }
     }
@@ -807,7 +828,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
     private class ConsistencyTestAction extends AbstractAction {
 
-        public ConsistencyTestAction() {
+        ConsistencyTestAction() {
             super(tr("Dataset consistency test"));
         }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
index 6b1d1e9..ae35bdd 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
@@ -117,7 +117,7 @@ public class WMSLayer extends AbstractCachedTileSourceLayer {
 
     @Override
     public String nameSupportedProjections() {
-        StringBuffer ret = new StringBuffer();
+        StringBuilder ret = new StringBuilder();
         for (String e: supportedProjections) {
             ret.append(e).append(", ");
         }
@@ -139,17 +139,6 @@ public class WMSLayer extends AbstractCachedTileSourceLayer {
         }
     }
 
-    /**
-     * Checks that WMS layer is a grabber-compatible one (HTML or WMS).
-     * @throws IllegalStateException if imagery time is neither HTML nor WMS
-     * @since 8068
-     * @deprecated not implemented anymore
-     */
-    @Deprecated
-    public void checkGrabberType() {
-        // not implemented
-    }
-
     @Override
     protected Class<? extends TileLoader> getTileLoaderClass() {
         return WMSCachedTileLoader.class;
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
index c340ded..b77234d 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
@@ -91,7 +91,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
 
     private static List<GpxData> loadedGpxData = new ArrayList<>();
 
-    private transient GeoImageLayer yLayer = null;
+    private transient GeoImageLayer yLayer;
     private double timezone;
     private long delta;
 
@@ -212,7 +212,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
         private GpxData data;
         private File file;
 
-        public GpxDataWrapper(String name, GpxData data, File file) {
+        GpxDataWrapper(String name, GpxData data, File file) {
             this.name = name;
             this.data = data;
             this.file = file;
@@ -236,7 +236,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
     private JLabel statusBarText;
 
     // remember the last number of matched photos
-    private int lastNumMatched = 0;
+    private int lastNumMatched;
 
     /** This class is called when the user doesn't find the GPX file he needs in the files that have
      * been loaded yet. It displays a FileChooser dialog to select the GPX file to be loaded.
@@ -299,7 +299,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                     Main.error(x);
                     JOptionPane.showMessageDialog(
                             Main.parent,
-                            tr("Could not read \"{0}\"", sel.getName())+"\n"+x.getMessage(),
+                            tr("Could not read \"{0}\"", sel.getName())+'\n'+x.getMessage(),
                             tr("Error"),
                             JOptionPane.ERROR_MESSAGE
                     );
@@ -393,7 +393,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
 
             gc.gridx = 2;
             gc.weightx = 0.2;
-            panelTf.add(new JLabel(" ["+dateFormat.toLocalizedPattern()+"]"), gc);
+            panelTf.add(new JLabel(" ["+dateFormat.toLocalizedPattern()+']'), gc);
 
             gc.gridx = 0;
             gc.gridy = 2;
@@ -510,7 +510,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                     }
                     if (date != null) {
                         lbExifTime.setText(DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM).format(date));
-                        tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+" ");
+                        tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+' ');
                         tfGpsTime.setEnabled(true);
                     } else {
                         lbExifTime.setText(tr("No date"));
@@ -778,7 +778,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
     private class StatusBarUpdater implements  DocumentListener, ItemListener, ActionListener {
         private boolean doRepaint;
 
-        public StatusBarUpdater(boolean doRepaint) {
+        StatusBarUpdater(boolean doRepaint) {
             this.doRepaint = doRepaint;
         }
 
@@ -927,7 +927,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                     ? (int) Math.floor(tz/2) + ":00"
                             : (int) Math.floor(tz/2) + ":30";
                     if (sldTimezone.getValue() < 0) {
-                        zone = "-" + zone;
+                        zone = '-' + zone;
                     }
 
                     lblTimezone.setText(tr("Timezone: {0}", zone));
@@ -1272,7 +1272,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
         return ret;
     }
 
-    private int getLastIndexOfListBefore(List<ImageEntry> images, long searchedTime) {
+    private static int getLastIndexOfListBefore(List<ImageEntry> images, long searchedTime) {
         int lstSize = images.size();
 
         // No photos or the first photo taken is later than the search period
@@ -1306,7 +1306,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
         return endIndex;
     }
 
-    private String formatTimezone(double timezone) {
+    private static String formatTimezone(double timezone) {
         StringBuilder ret = new StringBuilder();
 
         if (timezone < 0) {
@@ -1325,7 +1325,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
         return ret.toString();
     }
 
-    private double parseTimezone(String timezone) throws ParseException {
+    private static double parseTimezone(String timezone) throws ParseException {
 
         if (timezone.isEmpty())
             return 0;
@@ -1396,7 +1396,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
             return (h + m / 60.0) * (sgnTimezone == '-' ? -1 : 1);
     }
 
-    private long parseOffset(String offset) throws ParseException {
+    private static long parseOffset(String offset) throws ParseException {
         String error = tr("Error while parsing offset.\nExpected format: {0}", "number");
 
         if (!offset.isEmpty()) {
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
index 7ed43bc..96fcdf7 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
@@ -92,12 +92,12 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
 
     private int currentPhoto = -1;
 
-    boolean useThumbs = false;
+    boolean useThumbs;
     private ExecutorService thumbsLoaderExecutor =
             Executors.newSingleThreadExecutor(Utils.newThreadFactory("thumbnail-loader-%d", Thread.MIN_PRIORITY));
     private ThumbsLoader thumbsloader;
-    private boolean thumbsLoaderRunning = false;
-    volatile boolean thumbsLoaded = false;
+    private boolean thumbsLoaderRunning;
+    volatile boolean thumbsLoaded;
     private BufferedImage offscreenBuffer;
     boolean updateOffscreenBuffer = true;
 
@@ -108,7 +108,7 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
      */
     private static final class Loader extends PleaseWaitRunnable {
 
-        private boolean canceled = false;
+        private boolean canceled;
         private GeoImageLayer layer;
         private Collection<File> selection;
         private Set<String> loadedDirectories = new HashSet<>();
@@ -119,14 +119,15 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
             this.errorMessages.add(message);
         }
 
-        public Loader(Collection<File> selection, GpxLayer gpxLayer) {
+        Loader(Collection<File> selection, GpxLayer gpxLayer) {
             super(tr("Extracting GPS locations from EXIF"));
             this.selection = selection;
             this.gpxLayer = gpxLayer;
             errorMessages = new LinkedHashSet<>();
         }
 
-        @Override protected void realRun() throws IOException {
+        @Override
+        protected void realRun() throws IOException {
 
             progressMonitor.subTask(tr("Starting directory scan"));
             Collection<File> files = new ArrayList<>();
@@ -334,6 +335,7 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
         List<Action> entries = new ArrayList<>();
         entries.add(LayerListDialog.getInstance().createShowHideLayerAction());
         entries.add(LayerListDialog.getInstance().createDeleteLayerAction());
+        entries.add(LayerListDialog.getInstance().createMergeLayerAction(this));
         entries.add(new RenameLayerAction(null, this));
         entries.add(SeparatorLayerAction.INSTANCE);
         entries.add(new CorrelateGpxWithImages(this));
@@ -373,7 +375,7 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
         }
         return "<html>"
                 + trn("{0} image loaded.", "{0} images loaded.", n, n)
-                + " " + trn("{0} was found to be GPS tagged.", "{0} were found to be GPS tagged.", tagged, tagged)
+                + ' ' + trn("{0} was found to be GPS tagged.", "{0} were found to be GPS tagged.", tagged, tagged)
                 + (newdata > 0 ? "<br>" + trn("{0} has updated GPS data.", "{0} have updated GPS data.", newdata, newdata) : "")
                 + "</html>";
     }
@@ -441,7 +443,7 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
         thumbsLoaded &= l.thumbsLoaded;
     }
 
-    private Dimension scaledDimension(Image thumb) {
+    private static Dimension scaledDimension(Image thumb) {
         final double d = Main.map.mapView.getDist100Pixel();
         final double size = 10 /*meter*/;     /* size of the photo on the map */
         double s = size * 100 /*px*/ / d;
@@ -899,7 +901,7 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
         }
     }
 
-    private static volatile List<MapMode> supportedMapModes = null;
+    private static volatile List<MapMode> supportedMapModes;
 
     /**
      * Registers a map mode for which the functionality of this layer should be available.
@@ -935,8 +937,8 @@ public class GeoImageLayer extends Layer implements PropertyChangeListener, Jump
         return false;
     }
 
-    private MouseAdapter mouseAdapter = null;
-    private MapModeChangeListener mapModeListener = null;
+    private MouseAdapter mouseAdapter;
+    private MapModeChangeListener mapModeListener;
 
     @Override
     public void hookUpMapView() {
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
index 6c8a36b..c641f77 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
@@ -32,25 +32,25 @@ import org.openstreetmap.josm.tools.ExifReader;
 public class ImageDisplay extends JComponent {
 
     /** The file that is currently displayed */
-    private File file = null;
+    private File file;
 
     /** The image currently displayed */
-    private transient Image image = null;
+    private transient Image image;
 
     /** The image currently displayed */
-    private boolean errorLoading = false;
+    private boolean errorLoading;
 
     /** The rectangle (in image coordinates) of the image that is visible. This rectangle is calculated
      * each time the zoom is modified */
-    private Rectangle visibleRect = null;
+    private Rectangle visibleRect;
 
     /** When a selection is done, the rectangle of the selection (in image coordinates) */
-    private Rectangle selectedRect = null;
+    private Rectangle selectedRect;
 
     /** The tracker to load the images */
     private MediaTracker tracker = new MediaTracker(this);
 
-    private String osdText = null;
+    private String osdText;
 
     private static final int DRAG_BUTTON = Main.pref.getBoolean("geoimage.agpifo-style-drag-and-zoom", false) ? 1 : 3;
     private static final int ZOOM_BUTTON = DRAG_BUTTON == 1 ? 3 : 1;
@@ -61,7 +61,7 @@ public class ImageDisplay extends JComponent {
         private File file;
         private int orientation;
 
-        public LoadImageRunnable(File file, Integer orientation) {
+        LoadImageRunnable(File file, Integer orientation) {
             this.file = file;
             this.orientation = orientation == null ? -1 : orientation;
         }
@@ -135,9 +135,9 @@ public class ImageDisplay extends JComponent {
 
     private class ImgDisplayMouseListener implements MouseListener, MouseWheelListener, MouseMotionListener {
 
-        private boolean mouseIsDragging = false;
-        private long lastTimeForMousePoint = 0L;
-        private Point mousePointInImg = null;
+        private boolean mouseIsDragging;
+        private long lastTimeForMousePoint;
+        private Point mousePointInImg;
 
         /** Zoom in and out, trying to preserve the point of the image that was under the mouse cursor
          * at the same place */
@@ -558,7 +558,7 @@ public class ImageDisplay extends JComponent {
                 visibleRect.y + ((yComp - drawRect.y) * visibleRect.height) / drawRect.height);
     }
 
-    private Point getCenterImgCoord(Rectangle visibleRect) {
+    private static Point getCenterImgCoord(Rectangle visibleRect) {
         return new Point(visibleRect.x + visibleRect.width / 2,
                 visibleRect.y + visibleRect.height / 2);
     }
@@ -629,7 +629,7 @@ public class ImageDisplay extends JComponent {
         repaint();
     }
 
-    private void checkVisibleRectPos(Image image, Rectangle visibleRect) {
+    private static void checkVisibleRectPos(Image image, Rectangle visibleRect) {
         if (visibleRect.x < 0) {
             visibleRect.x = 0;
         }
@@ -644,7 +644,7 @@ public class ImageDisplay extends JComponent {
         }
     }
 
-    private void checkVisibleRectSize(Image image, Rectangle visibleRect) {
+    private static void checkVisibleRectSize(Image image, Rectangle visibleRect) {
         if (visibleRect.width > image.getWidth(null)) {
             visibleRect.width = image.getWidth(null);
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
index 7c7cd11..be92dfd 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java
@@ -22,9 +22,9 @@ public final class ImageEntry implements Comparable<ImageEntry>, Cloneable {
      * GPS data includes the position, speed, elevation, time (e.g. as extracted from the GPS track).
      * The flag can used to decide for which image file the EXIF GPS data is (re-)written.
      */
-    private boolean isNewGpsData = false;
+    private boolean isNewGpsData;
     /** Temporary source of GPS time if not correlated with GPX track. */
-    private Date exifGpsTime = null;
+    private Date exifGpsTime;
     Image thumbnail;
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
index a4572c8..7b90cf6 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
@@ -45,12 +45,12 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
     private static final String COMMAND_COPY_PATH = "copypath";
 
     private ImageDisplay imgDisplay = new ImageDisplay();
-    private boolean centerView = false;
+    private boolean centerView;
 
     // Only one instance of that class is present at one time
     private static volatile ImageViewerDialog dialog;
 
-    private boolean collapseButtonClicked = false;
+    private boolean collapseButtonClicked;
 
     static void newInstance() {
         dialog = new ImageViewerDialog();
@@ -203,7 +203,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
     class ImageAction extends AbstractAction {
         private final String action;
 
-        public ImageAction(String action, ImageIcon icon, String toolTipText) {
+        ImageAction(String action, ImageIcon icon, String toolTipText) {
             this.action = action;
             putValue(SHORT_DESCRIPTION, toolTipText);
             putValue(SMALL_ICON, icon);
@@ -275,8 +275,8 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         getInstance().btnNext.setEnabled(value);
     }
 
-    private transient GeoImageLayer currentLayer = null;
-    private transient ImageEntry currentEntry = null;
+    private transient GeoImageLayer currentLayer;
+    private transient ImageEntry currentEntry;
 
     public void displayImage(GeoImageLayer layer, ImageEntry entry) {
         boolean imageChanged;
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
index 80b3527..fb99aec 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
@@ -25,11 +25,11 @@ import org.openstreetmap.josm.tools.ExifReader;
 public class ThumbsLoader implements Runnable {
     public static final int maxSize = 120;
     public static final int minSize = 22;
-    public volatile boolean stop = false;
+    public volatile boolean stop;
     private List<ImageEntry> data;
     private GeoImageLayer layer;
     private MediaTracker tracker;
-    private ICacheAccess<String , BufferedImageCacheEntry> cache;
+    private ICacheAccess<String, BufferedImageCacheEntry> cache;
     private boolean cacheOff = Main.pref.getBoolean("geoimage.noThumbnailCache", false);
 
     public ThumbsLoader(GeoImageLayer layer) {
@@ -50,12 +50,12 @@ public class ThumbsLoader implements Runnable {
     public void run() {
         Main.debug("Load Thumbnails");
         tracker = new MediaTracker(Main.map.mapView);
-        for (int i = 0; i < data.size(); i++) {
+        for (ImageEntry entry : data) {
             if (stop) return;
 
             // Do not load thumbnails that were loaded before.
-            if (data.get(i).thumbnail == null) {
-                data.get(i).thumbnail = loadThumb(data.get(i));
+            if (entry.thumbnail == null) {
+                entry.thumbnail = loadThumb(entry);
 
                 if (Main.isDisplayingMapView()) {
                     layer.updateOffscreenBuffer = true;
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
index 848da50..d88604b 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
@@ -183,7 +183,7 @@ public class ChooseTrackVisibilityAction extends AbstractAction {
         return t;
     }
 
-    private boolean noUpdates = false;
+    private boolean noUpdates;
 
     /** selects all rows (=tracks) in the table that are currently visible on the layer*/
     private void selectVisibleTracksInTable() {
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
index 81d38cf..beef384 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -24,21 +25,95 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.markerlayer.Marker;
+import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
-public class ConvertToDataLayerAction extends AbstractAction {
-    private final transient GpxLayer layer;
+/**
+ * An abstract action for a conversion from a {@code T} {@link Layer} to a {@link OsmDataLayer}.
+ * @param <T> the source layer class
+ */
+public abstract class ConvertToDataLayerAction<T extends Layer> extends AbstractAction {
+    protected final transient T layer;
 
-    public ConvertToDataLayerAction(final GpxLayer layer) {
+    protected ConvertToDataLayerAction(final T layer) {
         super(tr("Convert to data layer"), ImageProvider.get("converttoosm"));
         this.layer = layer;
         putValue("help", ht("/Action/ConvertToDataLayer"));
     }
 
+    /**
+     * Converts a {@link GpxLayer} to a {@link OsmDataLayer}.
+     */
+    public static class FromGpxLayer extends ConvertToDataLayerAction<GpxLayer> {
+
+        /**
+         * Creates a new {@code FromGpxLayer}.
+         * @param layer the source layer
+         */
+        public FromGpxLayer(GpxLayer layer) {
+            super(layer);
+        }
+
+        @Override
+        public DataSet convert() {
+            final DataSet ds = new DataSet();
+            for (GpxTrack trk : layer.data.tracks) {
+                for (GpxTrackSegment segment : trk.getSegments()) {
+                    List<Node> nodes = new ArrayList<>();
+                    for (WayPoint p : segment.getWayPoints()) {
+                        Node n = new Node(p.getCoor());
+                        String timestr = p.getString(GpxConstants.PT_TIME);
+                        if (timestr != null) {
+                            n.setTimestamp(DateUtils.fromString(timestr));
+                        }
+                        ds.addPrimitive(n);
+                        nodes.add(n);
+                    }
+                    Way w = new Way();
+                    w.setNodes(nodes);
+                    ds.addPrimitive(w);
+                }
+            }
+            return ds;
+        }
+    }
+
+    /**
+     * Converts a {@link MarkerLayer} to a {@link OsmDataLayer}.
+     */
+    public static class FromMarkerLayer extends ConvertToDataLayerAction<MarkerLayer> {
+
+        /**
+         * Converts a {@link MarkerLayer} to a {@link OsmDataLayer}.
+         */
+        public FromMarkerLayer(MarkerLayer layer) {
+            super(layer);
+        }
+
+        @Override
+        public DataSet convert() {
+            final DataSet ds = new DataSet();
+            for (Marker marker : layer.data) {
+                final Node node = new Node(marker.getCoor());
+                node.put("name", marker.getText());
+                ds.addPrimitive(node);
+            }
+            return ds;
+        }
+    }
+
+    /**
+     * Performs the conversion to a {@link DataSet}.
+     * @return the resulting dataset
+     */
+    public abstract DataSet convert();
+
     @Override
     public void actionPerformed(ActionEvent e) {
         JPanel msg = new JPanel(new GridBagLayout());
@@ -52,25 +127,11 @@ public class ConvertToDataLayerAction extends AbstractAction {
                 JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_OPTION)) {
             return;
         }
-        DataSet ds = new DataSet();
-        for (GpxTrack trk : layer.data.tracks) {
-            for (GpxTrackSegment segment : trk.getSegments()) {
-                List<Node> nodes = new ArrayList<>();
-                for (WayPoint p : segment.getWayPoints()) {
-                    Node n = new Node(p.getCoor());
-                    String timestr = p.getString(GpxConstants.PT_TIME);
-                    if (timestr != null) {
-                        n.setTimestamp(DateUtils.fromString(timestr));
-                    }
-                    ds.addPrimitive(n);
-                    nodes.add(n);
-                }
-                Way w = new Way();
-                w.setNodes(nodes);
-                ds.addPrimitive(w);
-            }
-        }
-        Main.main.addLayer(new OsmDataLayer(ds, tr("Converted from: {0}", layer.getName()), layer.getAssociatedFile()));
-        Main.main.removeLayer(layer);
+        final DataSet ds = convert();
+        final OsmDataLayer layer = new OsmDataLayer(ds, tr("Converted from: {0}", this.layer.getName()), null);
+        layer.setAssociatedFile(new File(this.layer.getAssociatedFile().getParentFile(), this.layer.getAssociatedFile().getName() + ".osm"));
+        layer.setUploadDiscouraged(true);
+        Main.main.addLayer(layer);
+        Main.main.removeLayer(this.layer);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java b/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
index c2ac7eb..06debd0 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
@@ -72,7 +72,7 @@ public class DateFilterPanel extends JPanel {
         }
     };
 
-    private Timer t = new Timer(200 , new ActionListener() {
+    private Timer t = new Timer(200, new ActionListener() {
         @Override  public void actionPerformed(ActionEvent e) {
             applyFilter();
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
index c7cc64c..007e413 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
@@ -101,11 +101,11 @@ public class DownloadAlongTrackAction extends DownloadAlongAction {
         class CalculateDownloadArea extends PleaseWaitRunnable {
 
             private Area a = new Area();
-            private boolean cancel = false;
-            private int ticks = 0;
+            private boolean cancel;
+            private int ticks;
             private Rectangle2D r = new Rectangle2D.Double();
 
-            public CalculateDownloadArea() {
+            CalculateDownloadArea() {
                 super(tr("Calculating Download Area"), displayProgress ? null : NullProgressMonitor.INSTANCE, false);
             }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
index f00c865..736c578 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
@@ -52,7 +52,7 @@ public class GpxDrawHelper {
     private static final double PHI = Math.toRadians(15);
 
     //// Variables used only to check cache validity
-    private boolean computeCacheInSync = false;
+    private boolean computeCacheInSync;
     private int computeCacheMaxLineLengthUsed;
     private Color computeCacheColorUsed;
     private boolean computeCacheColorDynamic;
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
index 3b725fa..b974239 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
@@ -42,8 +42,8 @@ public class ImportAudioAction extends AbstractAction {
     private final transient GpxLayer layer;
 
     private static class Markers {
-        public boolean timedMarkersOmitted = false;
-        public boolean untimedMarkersOmitted = false;
+        public boolean timedMarkersOmitted;
+        public boolean untimedMarkersOmitted;
     }
 
     /**
@@ -56,7 +56,7 @@ public class ImportAudioAction extends AbstractAction {
         putValue("help", ht("/Action/ImportAudio"));
     }
 
-    private void warnCantImportIntoServerLayer(GpxLayer layer) {
+    private static void warnCantImportIntoServerLayer(GpxLayer layer) {
         String msg = tr("<html>The data in the GPX layer ''{0}'' has been downloaded from the server.<br>" +
                 "Because its way points do not include a timestamp we cannot correlate them with audio data.</html>",
                 layer.getName());
@@ -95,19 +95,17 @@ public class ImportAudioAction extends AbstractAction {
                     }
                 });
             }
-            String names = null;
+            StringBuilder names = new StringBuilder();
             for (File file : sel) {
-                if (names == null) {
-                    names = " (";
+                if (names.length() == 0) {
+                    names.append(" (");
                 } else {
-                    names += ", ";
+                    names.append(", ");
                 }
-                names += file.getName();
+                names.append(file.getName());
             }
-            if (names != null) {
-                names += ")";
-            } else {
-                names = "";
+            if (names.length() > 0) {
+                names.append(')');
             }
             MarkerLayer ml = new MarkerLayer(new GpxData(),
                     tr("Audio markers from {0}", layer.getName()) + names, layer.getAssociatedFile(), layer);
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
index 765ec1c..b47e731 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
@@ -32,7 +32,7 @@ public class ImportImagesAction extends AbstractAction {
         putValue("help", ht("/Action/ImportImages"));
     }
 
-    private void warnCantImportIntoServerLayer(GpxLayer layer) {
+    private static void warnCantImportIntoServerLayer(GpxLayer layer) {
         String msg = tr("<html>The data in the GPX layer ''{0}'' has been downloaded from the server.<br>"+
                 "Because its way points do not include a timestamp we cannot correlate them with images.</html>",
                 layer.getName());
@@ -40,7 +40,7 @@ public class ImportImagesAction extends AbstractAction {
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportImages#CantImportIntoGpxLayerFromServer"));
     }
 
-    private void addRecursiveFiles(List<File> files, File[] sel) {
+    private static void addRecursiveFiles(List<File> files, File[] sel) {
         for (File f : sel) {
             if (f.isDirectory()) {
                 addRecursiveFiles(files, f.listFiles());
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
index 5211701..7fcd20d 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
@@ -22,9 +22,9 @@ import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
 public class AudioMarker extends ButtonMarker {
 
     private URL audioUrl;
-    private static volatile AudioMarker recentlyPlayedMarker = null;
+    private static volatile AudioMarker recentlyPlayedMarker;
     public double syncOffset;
-    public boolean timeFromAudio = false; // as opposed to from the GPX track
+    public boolean timeFromAudio; // as opposed to from the GPX track
 
     public AudioMarker(LatLon ll, TemplateEngineDataProvider dataProvider, URL audioUrl, MarkerLayer parentLayer, double time, double offset) {
         super(ll, dataProvider, "speech", parentLayer, time, offset);
@@ -33,7 +33,8 @@ public class AudioMarker extends ButtonMarker {
         this.timeFromAudio = false;
     }
 
-    @Override public void actionPerformed(ActionEvent ev) {
+    @Override
+    public void actionPerformed(ActionEvent ev) {
         play();
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
index 506b800..ffb3d24 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
@@ -14,7 +14,9 @@ import java.net.URL;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -109,7 +111,7 @@ public class Marker implements TemplateEngineDataProvider {
         public static TemplateEntryProperty forMarker(String layerName) {
             String key = "draw.rawgps.layer.wpt.pattern";
             if (layerName != null) {
-                key += "." + layerName;
+                key += '.' + layerName;
             }
             TemplateEntryProperty result = CACHE.get(key);
             if (result == null) {
@@ -124,7 +126,7 @@ public class Marker implements TemplateEngineDataProvider {
         public static TemplateEntryProperty forAudioMarker(String layerName) {
             String key = "draw.rawgps.layer.audiowpt.pattern";
             if (layerName != null) {
-                key += "." + layerName;
+                key += '.' + layerName;
             }
             TemplateEntryProperty result = CACHE.get(key);
             if (result == null) {
@@ -182,7 +184,7 @@ public class Marker implements TemplateEngineDataProvider {
     static {
         Marker.markerProducers.add(new MarkerProducers() {
             @Override
-            public Marker createMarker(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
+            public Collection<Marker> createMarkers(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
                 String uri = null;
                 // cheapest way to check whether "link" object exists and is a non-empty collection of GpxLink objects...
                 Collection<GpxLink> links = wpt.<GpxLink>getCollection(GpxConstants.META_LINKS);
@@ -193,27 +195,19 @@ public class Marker implements TemplateEngineDataProvider {
                     }
                 }
 
-                URL url = null;
-                if (uri != null) {
-                    try {
-                        url = new URL(uri);
-                    } catch (MalformedURLException e) {
-                        // Try a relative file:// url, if the link is not in an URL-compatible form
-                        if (relativePath != null) {
-                            url = Utils.fileToURL(new File(relativePath.getParentFile(), uri));
-                        }
-                    }
-                }
+                URL url = uriToUrl(uri, relativePath);
 
                 String urlStr = url == null ? "" : url.toString();
+                String symbolName = wpt.getString("symbol");
+                if (symbolName == null) {
+                    symbolName = wpt.getString(GpxConstants.PT_SYM);
+                }
+                // text marker is returned in every case, see #10208
+                final Marker marker = new Marker(wpt.getCoor(), wpt, symbolName, parentLayer, time, offset);
                 if (url == null) {
-                    String symbolName = wpt.getString("symbol");
-                    if (symbolName == null) {
-                        symbolName = wpt.getString(GpxConstants.PT_SYM);
-                    }
-                    return new Marker(wpt.getCoor(), wpt, symbolName, parentLayer, time, offset);
+                    return Collections.singleton(marker);
                 } else if (urlStr.endsWith(".wav")) {
-                    AudioMarker audioMarker = new AudioMarker(wpt.getCoor(), wpt, url, parentLayer, time, offset);
+                    final AudioMarker audioMarker = new AudioMarker(wpt.getCoor(), wpt, url, parentLayer, time, offset);
                     Extensions exts = (Extensions) wpt.get(GpxConstants.META_EXTENSIONS);
                     if (exts != null && exts.containsKey("offset")) {
                         try {
@@ -222,16 +216,31 @@ public class Marker implements TemplateEngineDataProvider {
                             Main.warn(nfe);
                         }
                     }
-                    return audioMarker;
+                    return Arrays.asList(marker, audioMarker);
                 } else if (urlStr.endsWith(".png") || urlStr.endsWith(".jpg") || urlStr.endsWith(".jpeg") || urlStr.endsWith(".gif")) {
-                    return new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    return Arrays.asList(marker, new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset));
                 } else {
-                    return new WebMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    return Arrays.asList(marker, new WebMarker(wpt.getCoor(), url, parentLayer, time, offset));
                 }
             }
         });
     }
 
+    private static URL uriToUrl(String uri, File relativePath) {
+        URL url = null;
+        if (uri != null) {
+            try {
+                url = new URL(uri);
+            } catch (MalformedURLException e) {
+                // Try a relative file:// url, if the link is not in an URL-compatible form
+                if (relativePath != null) {
+                    url = Utils.fileToURL(new File(relativePath.getParentFile(), uri));
+                }
+            }
+        }
+        return url;
+    }
+
     /**
      * Returns an object of class Marker or one of its subclasses
      * created from the parameters given.
@@ -245,11 +254,11 @@ public class Marker implements TemplateEngineDataProvider {
      *        the GPX file from which it was derived (if any).
      * @return a new Marker object
      */
-    public static Marker createMarker(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
+    public static Collection<Marker> createMarkers(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
         for (MarkerProducers maker : Marker.markerProducers) {
-            Marker marker = maker.createMarker(wpt, relativePath, parentLayer, time, offset);
-            if (marker != null)
-                return marker;
+            final Collection<Marker> markers = maker.createMarkers(wpt, relativePath, parentLayer, time, offset);
+            if (markers != null)
+                return markers;
         }
         return null;
     }
@@ -266,7 +275,7 @@ public class Marker implements TemplateEngineDataProvider {
     private final String text;
 
     protected final ImageIcon symbol;
-    private BufferedImage redSymbol = null;
+    private BufferedImage redSymbol;
     public final MarkerLayer parentLayer;
     /** Absolute time of marker in seconds since epoch */
     public double time;
@@ -277,7 +286,7 @@ public class Marker implements TemplateEngineDataProvider {
     private int textVersion = -1;
     private CachedLatLon coor;
 
-    private boolean erroneous = false;
+    private boolean erroneous;
 
     public Marker(LatLon ll, TemplateEngineDataProvider dataProvider, String iconName, MarkerLayer parentLayer,
             double time, double offset) {
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
index 434b40c..42f9b82 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
@@ -47,6 +47,7 @@ import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToMarkerLayer;
 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToNextMarker;
 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToPreviousMarker;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.gpx.ConvertToDataLayerAction;
 import org.openstreetmap.josm.tools.AudioPlayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -67,10 +68,10 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
      * A list of markers.
      */
     public final List<Marker> data;
-    private boolean mousePressed = false;
-    public GpxLayer fromLayer = null;
+    private boolean mousePressed;
+    public GpxLayer fromLayer;
     private Marker currentMarker;
-    public AudioMarker syncAudioMarker = null;
+    public AudioMarker syncAudioMarker;
 
     /**
      * Constructs a new {@code MarkerLayer}.
@@ -127,9 +128,9 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
             if (offset == null) {
                 offset = time - firstTime;
             }
-            Marker m = Marker.createMarker(wpt, indata.storageFile, this, time, offset);
-            if (m != null) {
-                data.add(m);
+            final Collection<Marker> markers = Marker.createMarkers(wpt, indata.storageFile, this, time, offset);
+            if (markers != null) {
+                data.addAll(markers);
             }
         }
     }
@@ -217,11 +218,13 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
         }
     }
 
-    @Override public String getToolTipText() {
-        return data.size()+" "+trn("marker", "markers", data.size());
+    @Override
+    public String getToolTipText() {
+        return data.size()+' '+trn("marker", "markers", data.size());
     }
 
-    @Override public void mergeFrom(Layer from) {
+    @Override
+    public void mergeFrom(Layer from) {
         MarkerLayer layer = (MarkerLayer) from;
         data.addAll(layer.data);
         Collections.sort(data, new Comparator<Marker>() {
@@ -251,6 +254,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
         components.add(LayerListDialog.getInstance().createShowHideLayerAction());
         components.add(new ShowHideMarkerText(this));
         components.add(LayerListDialog.getInstance().createDeleteLayerAction());
+        components.add(LayerListDialog.getInstance().createMergeLayerAction(this));
         components.add(SeparatorLayerAction.INSTANCE);
         components.add(new CustomizeColor(this));
         components.add(SeparatorLayerAction.INSTANCE);
@@ -260,6 +264,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
         }
         components.add(new JumpToNextMarker(this));
         components.add(new JumpToPreviousMarker(this));
+        components.add(new ConvertToDataLayerAction.FromMarkerLayer(this));
         components.add(new RenameLayerAction(getAssociatedFile(), this));
         components.add(SeparatorLayerAction.INSTANCE);
         components.add(new LayerListPopup.InfoAction(this));
@@ -501,7 +506,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
         /**
          * Constructs a new {@code SynchronizeAudio} action.
          */
-        public SynchronizeAudio() {
+        SynchronizeAudio() {
             super(tr("Synchronize Audio"), ImageProvider.get("audio-sync"));
             putValue("help", ht("/Action/SynchronizeAudio"));
         }
@@ -538,7 +543,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
 
     private class MoveAudio extends AbstractAction {
 
-        public MoveAudio() {
+        MoveAudio() {
             super(tr("Make Audio Marker at Play Head"), ImageProvider.get("addmarkers"));
             putValue("help", ht("/Action/MakeAudioMarkerAtPlayHead"));
         }
@@ -561,5 +566,4 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
             Main.map.mapView.repaint();
         }
     }
-
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
index a40a3fb..699ba16 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.layer.markerlayer;
 
 import java.io.File;
+import java.util.Collection;
 
 import org.openstreetmap.josm.data.gpx.WayPoint;
 
@@ -15,13 +16,13 @@ import org.openstreetmap.josm.data.gpx.WayPoint;
  */
 public interface MarkerProducers {
     /**
-     * Returns a Marker object if this implementation wants to create one for the
+     * Returns a collection of Marker objects if this implementation wants to create one for the
      * given input data, or <code>null</code> otherwise.
      *
      * @param wp waypoint data
      * @param relativePath An path to use for constructing relative URLs or
      *        <code>null</code> for no relative URLs
-     * @return A Marker object, or <code>null</code>.
+     * @return A collection of Marker objects, or <code>null</code>.
      */
-    Marker createMarker(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
+    Collection<Marker> createMarkers(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
index 6cf8788..a0741e0 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
@@ -34,15 +34,15 @@ import org.openstreetmap.josm.tools.AudioPlayer;
  */
 public final class PlayHeadMarker extends Marker {
 
-    private Timer timer = null;
-    private double animationInterval = 0.0; // seconds
-    private static volatile PlayHeadMarker playHead = null;
-    private MapMode oldMode = null;
+    private Timer timer;
+    private double animationInterval; // seconds
+    private static volatile PlayHeadMarker playHead;
+    private MapMode oldMode;
     private LatLon oldCoor;
     private boolean enabled;
-    private boolean wasPlaying = false;
+    private boolean wasPlaying;
     private int dropTolerance; /* pixels */
-    private boolean jumpToMarker = false;
+    private boolean jumpToMarker;
 
     /**
      * Returns the unique instance of {@code PlayHeadMarker}.
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
index d539fd5..99e49c4 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/WebMarker.java
@@ -42,7 +42,7 @@ public class WebMarker extends ButtonMarker {
             setErroneous(true);
             new Notification(
                     "<b>" + tr("There was an error while trying to display the URL for this marker") + "</b><br>" +
-                                  tr("(URL was: ") + webUrl + ")" + "<br>" + error)
+                                  tr("(URL was: ") + webUrl + ')' + "<br>" + error)
                     .setIcon(JOptionPane.ERROR_MESSAGE)
                     .setDuration(Notification.TIME_LONG)
                     .show();
diff --git a/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java
index c6e21c6..3601704 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/BoxTextElemStyle.java
@@ -34,14 +34,16 @@ public class BoxTextElemStyle extends ElemStyle {
         }
 
         /**
-         * The box
+         * Returns the box.
+         * @return the box
          */
         public Rectangle getBox() {
             return box;
         }
 
         /**
-         * True, if the box can change in future calls of the BoxProvider get() method
+         * Determines if the box can change in future calls of the {@link BoxProvider#get()} method
+         * @return {@code true} if the box can change in future calls of the {@code BoxProvider#get()} method
          */
         public boolean isTemporary() {
             return temporary;
@@ -51,6 +53,10 @@ public class BoxTextElemStyle extends ElemStyle {
     public static class SimpleBoxProvider implements BoxProvider {
         private Rectangle box;
 
+        /**
+         * Constructs a new {@code SimpleBoxProvider}.
+         * @param box the box
+         */
         public SimpleBoxProvider(Rectangle box) {
             this.box = box;
         }
@@ -179,7 +185,7 @@ public class BoxTextElemStyle extends ElemStyle {
      * FIXME: the cache isn't updated if the user changes the preference during a JOSM
      * session. There should be preference listener updating this cache.
      */
-    private static volatile Color DEFAULT_TEXT_COLOR = null;
+    private static volatile Color DEFAULT_TEXT_COLOR;
 
     private static void initDefaultParameters() {
         if (DEFAULT_TEXT_COLOR != null) return;
@@ -230,8 +236,7 @@ public class BoxTextElemStyle extends ElemStyle {
 
     @Override
     public String toString() {
-        return "BoxTextElemStyle{" + super.toString() + " " + text.toStringImpl()
+        return "BoxTextElemStyle{" + super.toString() + ' ' + text.toStringImpl()
                 + " box=" + box + " hAlign=" + hAlign + " vAlign=" + vAlign + '}';
     }
-
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/Cascade.java b/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
index 473a4fb..3feebcc 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
@@ -207,7 +207,7 @@ public final class Cascade implements Cloneable {
     public String toString() {
         StringBuilder res = new StringBuilder("Cascade{ ");
         for (Entry<String, Object> entry : prop.entrySet()) {
-            res.append(entry.getKey()+":");
+            res.append(entry.getKey()+':');
             Object val = entry.getValue();
             if (val instanceof float[]) {
                 res.append(Arrays.toString((float[]) val));
diff --git a/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
index 4db8ffe..d12c101 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java
@@ -19,8 +19,9 @@ public abstract class ElemStyle implements StyleKeys {
     protected static final int ICON_OPACITY_IDX = 3;
     protected static final int ICON_OFFSET_X_IDX = 4;
     protected static final int ICON_OFFSET_Y_IDX = 5;
-    public static final String[] ICON_KEYS = {ICON_IMAGE, ICON_WIDTH, ICON_HEIGHT, ICON_OPACITY, ICON_OFFSET_X, ICON_OFFSET_Y};
-    public static final String[] REPEAT_IMAGE_KEYS = {REPEAT_IMAGE, REPEAT_IMAGE_WIDTH, REPEAT_IMAGE_HEIGHT, REPEAT_IMAGE_OPACITY, null, null};
+    protected static final String[] ICON_KEYS = {ICON_IMAGE, ICON_WIDTH, ICON_HEIGHT, ICON_OPACITY, ICON_OFFSET_X, ICON_OFFSET_Y};
+    protected static final String[] REPEAT_IMAGE_KEYS = {REPEAT_IMAGE, REPEAT_IMAGE_WIDTH, REPEAT_IMAGE_HEIGHT, REPEAT_IMAGE_OPACITY,
+            null, null};
 
     public float majorZIndex;
     public float zIndex;
@@ -95,8 +96,8 @@ public abstract class ElemStyle implements StyleKeys {
      * FIXME: cached preference values are not updated if the user changes them during
      * a JOSM session. Should have a listener listening to preference changes.
      */
-    private static volatile String DEFAULT_FONT_NAME = null;
-    private static volatile Float DEFAULT_FONT_SIZE = null;
+    private static volatile String DEFAULT_FONT_NAME;
+    private static volatile Float DEFAULT_FONT_SIZE;
     private static final Object lock = new Object();
 
     // thread save access (double-checked locking)
@@ -131,7 +132,7 @@ public abstract class ElemStyle implements StyleKeys {
         public int style;
         public int size;
 
-        public FontDescriptor(String name, int style, int size) {
+        FontDescriptor(String name, int style, int size) {
             this.name = name;
             this.style = style;
             this.size = size;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
index 462ad41..38f2945 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
@@ -43,7 +43,6 @@ public class ElemStyles {
      */
     public void clearCached() {
         // run in EDT to make sure this isn't called during rendering run
-        // {@link org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer#render}
         GuiHelper.runInEDT(new Runnable() {
             @Override
             public void run() {
@@ -131,7 +130,7 @@ public class ElemStyles {
         } catch (StyleCache.RangeViolatedError e) {
             throw new AssertionError("Range violated: " + e.getMessage()
                     + " (object: " + osm.getPrimitiveId() + ", current style: "+osm.mappaintStyle
-                    + ", scale: " + scale + ", new stylelist: " + p.a + ", new range: " + p.b + ")", e);
+                    + ", scale: " + scale + ", new stylelist: " + p.a + ", new range: " + p.b + ')', e);
         }
         osm.mappaintCacheIdx = cacheIdx;
         return p;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/Environment.java b/src/org/openstreetmap/josm/gui/mappaint/Environment.java
index 61822b5..f004267 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/Environment.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/Environment.java
@@ -36,12 +36,12 @@ public class Environment {
     /**
      * index of node in parent way or member in parent relation. Must be != null in LINK context.
      */
-    public Integer index = null;
+    public Integer index;
 
     /**
      * count of nodes in parent way or members in parent relation. Must be != null in LINK context.
      */
-    public Integer count = null;
+    public Integer count;
 
     /**
      * Creates a new uninitialized environment.
diff --git a/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java
index bb911e8..97ea371 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/LabelCompositionStrategy.java
@@ -62,7 +62,7 @@ public abstract class LabelCompositionStrategy {
 
         @Override
         public String toString() {
-            return "{"  + getClass().getSimpleName() + " defaultLabel=" + defaultLabel + "}";
+            return '{' + getClass().getSimpleName() + " defaultLabel=" + defaultLabel + '}';
         }
 
         @Override
@@ -118,7 +118,7 @@ public abstract class LabelCompositionStrategy {
 
         @Override
         public String toString() {
-            return "{" + getClass().getSimpleName() + " defaultLabelTag=" + defaultLabelTag + "}";
+            return '{' + getClass().getSimpleName() + " defaultLabelTag=" + defaultLabelTag + '}';
         }
 
         @Override
@@ -262,26 +262,27 @@ public abstract class LabelCompositionStrategy {
         }
 
         private String getPrimitiveName(OsmPrimitive n) {
-            String name = null;
+            StringBuilder name = new StringBuilder();
             if (!n.hasKeys()) return null;
             for (String rn : nameTags) {
-                name = n.get(rn);
-                if (name != null) {
+                String val = n.get(rn);
+                if (val != null) {
+                    name.append(val);
                     break;
                 }
             }
             for (String rn : nameComplementTags) {
                 String comp = n.get(rn);
                 if (comp != null) {
-                    if (name == null) {
-                        name = comp;
+                    if (name.length() == 0) {
+                        name.append(comp);
                     } else {
-                        name += " (" + comp + ")";
+                        name.append(" (").append(comp).append(')');
                     }
                     break;
                 }
             }
-            return name;
+            return name.toString();
         }
 
         @Override
@@ -292,7 +293,7 @@ public abstract class LabelCompositionStrategy {
 
         @Override
         public String toString() {
-            return "{" + getClass().getSimpleName() +"}";
+            return "{" + getClass().getSimpleName() +'}';
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
index 1a200b1..11fea4a 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
@@ -138,7 +138,7 @@ public class LineElemStyle extends ElemStyle {
             }
             if (widthTag != null) {
                 try {
-                    realWidth = Float.valueOf(widthTag);
+                    realWidth = Float.parseFloat(widthTag);
                 } catch (NumberFormatException nfe) {
                     Main.warn(nfe);
                 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java
index 74673e6..ff8790a 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/LineTextElemStyle.java
@@ -55,6 +55,6 @@ public class LineTextElemStyle extends ElemStyle {
 
     @Override
     public String toString() {
-        return "LineTextElemStyle{" + super.toString() + "text=" + text + "}";
+        return "LineTextElemStyle{" + super.toString() + "text=" + text + '}';
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapImage.java b/src/org/openstreetmap/josm/gui/mappaint/MapImage.java
index fa7700f..5e06a83 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapImage.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapImage.java
@@ -35,8 +35,8 @@ public class MapImage {
     public boolean autoRescale;
     public int width = -1;
     public int height = -1;
-    public int offsetX = 0;
-    public int offsetY = 0;
+    public int offsetX;
+    public int offsetY;
 
     private boolean temporary;
     private BufferedImage disabledImgCache;
@@ -53,7 +53,7 @@ public class MapImage {
 
     /**
      * Get the image associated with this MapImage object.
-     * 
+     *
      * @param disabled {@code} true to request disabled version, {@code false} for the standard version
      * @return the image
      */
@@ -136,7 +136,8 @@ public class MapImage {
     }
 
     /**
-     * Returns true, if image is not completely loaded and getImage() returns a temporary image.
+     * Determines if image is not completely loaded and {@code getImage()} returns a temporary image.
+     * @return {@code true} if image is not completely loaded and getImage() returns a temporary image
      */
     public boolean isTemporary() {
         return temporary;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
index 8472dc5..1dff0d4 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintMenu.java
@@ -32,7 +32,7 @@ public class MapPaintMenu extends JMenu implements MapPaintSylesUpdateListener {
         private transient StyleSource style;
         private JCheckBoxMenuItem button;
 
-        public MapPaintAction(StyleSource style) {
+        MapPaintAction(StyleSource style) {
             super(style.getDisplayString(), style.getIconProvider(),
                     tr("Select the map painting styles"), null, true, "mappaint/" + style.getDisplayString(), true);
             this.button = new StayOpenCheckBoxMenuItem(this);
@@ -68,7 +68,7 @@ public class MapPaintMenu extends JMenu implements MapPaintSylesUpdateListener {
             setEnabled(Main.isDisplayingMapView() && (Main.main.hasEditLayer() || mapHasGpxorMarkerLayer()));
         }
 
-        private boolean mapHasGpxorMarkerLayer() {
+        private static boolean mapHasGpxorMarkerLayer() {
             for (Layer layer : Main.map.mapView.getAllLayers()) {
                 if (layer instanceof GpxLayer || layer instanceof MarkerLayer) {
                     return true;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
index 058ccbe..73bf4d6 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
@@ -10,6 +10,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -265,9 +266,14 @@ public final class MapPaintStyles {
                 Main.error(e);
             }
         }
-        if (Main.isDebugEnabled()) {
+        if (Main.isDebugEnabled() || !source.getErrors().isEmpty()) {
             final long elapsedTime = System.currentTimeMillis() - startTime;
-            Main.debug("Initializing map style " + source.url + " completed in " + Utils.getDurationString(elapsedTime));
+            String message = "Initializing map style " + source.url + " completed in " + Utils.getDurationString(elapsedTime);
+            if (!source.getErrors().isEmpty()) {
+                Main.warn(message + " (" + source.getErrors().size() + " errors)");
+            } else {
+                Main.debug(message);
+            }
         }
     }
 
@@ -432,7 +438,12 @@ public final class MapPaintStyles {
         Main.map.mapView.repaint();
     }
 
-    public static void addStyle(SourceEntry entry) {
+    /**
+     * Add a new map paint style.
+     * @param entry map paint style
+     * @return list of errors that occured during loading
+     */
+    public static Collection<Throwable> addStyle(SourceEntry entry) {
         StyleSource source = fromSourceEntry(entry);
         if (source != null) {
             styles.add(source);
@@ -440,8 +451,12 @@ public final class MapPaintStyles {
             MapPaintPrefHelper.INSTANCE.put(styles.getStyleSources());
             fireMapPaintSylesUpdated();
             styles.clearCached();
-            Main.map.mapView.repaint();
+            if (Main.isDisplayingMapView()) {
+                Main.map.mapView.repaint();
+            }
+            return source.getErrors();
         }
+        return Collections.emptyList();
     }
 
     /***********************************
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java b/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java
index e992169..b7b7414 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MultiCascade.java
@@ -42,7 +42,7 @@ public class MultiCascade implements StyleKeys {
                 // Everything that is not on the default layer is assumed to
                 // be a modifier. Can be overridden in style definition.
                 if (!"default".equals(layer) && !"*".equals(layer)) {
-                    c.put(MODIFIER, true);
+                    c.put(MODIFIER, Boolean.TRUE);
                 }
             }
             layers.put(layer, c);
diff --git a/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
index 4bc5f2b..d46d498 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/NodeElemStyle.java
@@ -389,13 +389,13 @@ public class NodeElemStyle extends ElemStyle implements StyleKeys {
         StringBuilder s = new StringBuilder("NodeElemStyle{");
         s.append(super.toString());
         if (mapImage != null) {
-            s.append(" icon=[" + mapImage + "]");
+            s.append(" icon=[" + mapImage + ']');
         }
         if (symbol != null) {
-            s.append(" symbol=[" + symbol + "]");
+            s.append(" symbol=[" + symbol + ']');
         }
         if (mapImageAngle != null) {
-            s.append(" mapImageAngle=[" + mapImageAngle + "]");
+            s.append(" mapImageAngle=[" + mapImageAngle + ']');
         }
         s.append('}');
         return s.toString();
diff --git a/src/org/openstreetmap/josm/gui/mappaint/Range.java b/src/org/openstreetmap/josm/gui/mappaint/Range.java
index 71ae976..fc32160 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/Range.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/Range.java
@@ -20,7 +20,7 @@ public class Range {
      */
     public Range(double lower, double upper) {
         if (lower < 0 || lower >= upper)
-            throw new IllegalArgumentException("Invalid range: "+lower+"-"+upper);
+            throw new IllegalArgumentException("Invalid range: "+lower+'-'+upper);
         this.lower = lower;
         this.upper = upper;
     }
@@ -31,6 +31,9 @@ public class Range {
 
     /**
      * provides the intersection of 2 overlapping ranges
+     * @param a first range
+     * @param b second range
+     * @return intersection of {@code a} and {@code b}
      */
     public static Range cut(Range a, Range b) {
         if (b.lower >= a.upper || b.upper <= a.lower)
diff --git a/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java b/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java
index 2f3c125..4732924 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/RepeatImageElemStyle.java
@@ -90,6 +90,6 @@ public class RepeatImageElemStyle extends ElemStyle implements StyleKeys {
     public String toString() {
         return "RepeatImageStyle{" + super.toString() + "pattern=[" + pattern +
                 "], offset=" + offset + ", spacing=" + spacing +
-                ", phase=" + (-phase) + ", align=" + align + "}";
+                ", phase=" + (-phase) + ", align=" + align + '}';
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
index 56b5bba..feb9aac 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
@@ -7,6 +7,7 @@ import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.EnumSet;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Pattern;
@@ -55,6 +56,10 @@ public abstract class Condition {
         }
     }
 
+    public static Condition createRegexpKeyRegexpValueCondition(String k, String v, Op op) {
+        return new RegexpKeyValueRegexpCondition(k, v, op);
+    }
+
     public static Condition createKeyCondition(String k, boolean not, KeyMatchType matchType, Context context) {
         switch (context) {
         case PRIMITIVE:
@@ -86,7 +91,7 @@ public abstract class Condition {
     /**
      * This is the operation that {@link KeyValueCondition} uses to match.
      */
-    public static enum Op {
+    public enum Op {
         /** The value equals the given reference. */
         EQ,
         /** The value does not equal the reference. */
@@ -113,7 +118,7 @@ public abstract class Condition {
          /** The value needs to contain the reference string. */
         CONTAINS;
 
-        public static final Set<Op> NEGATED_OPS = EnumSet.of(NEQ, NREGEX);
+        protected static final Set<Op> NEGATED_OPS = EnumSet.of(NEQ, NREGEX);
 
         /**
          * Evaluates a value against a reference string.
@@ -169,7 +174,7 @@ public abstract class Condition {
     /**
      * Context, where the condition applies.
      */
-    public static enum Context {
+    public enum Context {
         /**
          * normal primitive selector, e.g. way[highway=residential]
          */
@@ -270,14 +275,14 @@ public abstract class Condition {
 
         @Override
         public String toString() {
-            return "[" + k + "'" + op + "'" + v + "]";
+            return '[' + k + '\'' + op + '\'' + v + ']';
         }
     }
 
     public static class KeyValueRegexpCondition extends KeyValueCondition {
 
         public final Pattern pattern;
-        public static final Set<Op> SUPPORTED_OPS = EnumSet.of(Op.REGEX, Op.NREGEX);
+        protected static final Set<Op> SUPPORTED_OPS = EnumSet.of(Op.REGEX, Op.NREGEX);
 
         public KeyValueRegexpCondition(String k, String v, Op op, boolean considerValAsKey) {
             super(k, v, op, considerValAsKey);
@@ -286,19 +291,43 @@ public abstract class Condition {
             this.pattern = Pattern.compile(v);
         }
 
+        protected boolean matches(Environment env) {
+            final String value = env.osm.get(k);
+            return value != null && pattern.matcher(value).find();
+        }
+
         @Override
         public boolean applies(Environment env) {
-            final String value = env.osm.get(k);
             if (Op.REGEX.equals(op)) {
-                return value != null && pattern.matcher(value).find();
+                return matches(env);
             } else if (Op.NREGEX.equals(op)) {
-                return value == null || !pattern.matcher(value).find();
+                return !matches(env);
             } else {
                 throw new IllegalStateException();
             }
         }
     }
 
+    public static class RegexpKeyValueRegexpCondition extends KeyValueRegexpCondition {
+
+        public final Pattern keyPattern;
+
+        public RegexpKeyValueRegexpCondition(String k, String v, Op op) {
+            super(k, v, op, false);
+            this.keyPattern = Pattern.compile(k);
+        }
+
+        @Override
+        protected boolean matches(Environment env) {
+            for (Map.Entry<String, String> kv: env.osm.getKeys().entrySet()) {
+                if (keyPattern.matcher(kv.getKey()).find() && pattern.matcher(kv.getValue()).find()) {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
     public static class RoleCondition extends Condition {
         public final String role;
         public final Op op;
@@ -339,7 +368,7 @@ public abstract class Condition {
     /**
      * This defines how {@link KeyCondition} matches a given key.
      */
-    public static enum KeyMatchType {
+    public enum KeyMatchType {
         /**
          * The key needs to be equal to the given label.
          */
@@ -457,7 +486,7 @@ public abstract class Condition {
 
         @Override
         public String toString() {
-            return "[" + (negateResult ? "!" : "") + label + "]";
+            return '[' + (negateResult ? "!" : "") + label + ']';
         }
     }
 
@@ -478,7 +507,7 @@ public abstract class Condition {
 
         @Override
         public String toString() {
-            return (not ? "!" : "") + "." + id;
+            return (not ? "!" : "") + '.' + id;
         }
     }
 
@@ -490,6 +519,8 @@ public abstract class Condition {
 
         /**
          * {@code closed} tests whether the way is closed or the relation is a closed multipolygon
+         * @param e MapCSS environment
+         * @return {@code true} if the way is closed or the relation is a closed multipolygon
          */
         static boolean closed(Environment e) {
             if (e.osm instanceof Way && ((Way) e.osm).isClosed())
@@ -501,7 +532,9 @@ public abstract class Condition {
 
         /**
          * {@code :modified} tests whether the object has been modified.
-         * @see OsmPrimitive#isModified() ()
+         * @param e MapCSS environment
+         * @return {@code true} if the object has been modified
+         * @see OsmPrimitive#isModified()
          */
         static boolean modified(Environment e) {
             return e.osm.isModified() || e.osm.isNewOrUndeleted();
@@ -509,6 +542,8 @@ public abstract class Condition {
 
         /**
          * {@code ;new} tests whether the object is new.
+         * @param e MapCSS environment
+         * @return {@code true} if the object is new
          * @see OsmPrimitive#isNew()
          */
         static boolean _new(Environment e) {
@@ -517,14 +552,18 @@ public abstract class Condition {
 
         /**
          * {@code :connection} tests whether the object is a connection node.
+         * @param e MapCSS environment
+         * @return {@code true} if the object is a connection node
          * @see Node#isConnectionNode()
          */
         static boolean connection(Environment e) {
-            return e.osm instanceof Node && ((Node) e.osm).isConnectionNode();
+            return e.osm instanceof Node && e.osm.getDataSet() != null && ((Node) e.osm).isConnectionNode();
         }
 
         /**
          * {@code :tagged} tests whether the object is tagged.
+         * @param e MapCSS environment
+         * @return {@code true} if the object is tagged
          * @see OsmPrimitive#isTagged()
          */
         static boolean tagged(Environment e) {
@@ -533,6 +572,8 @@ public abstract class Condition {
 
         /**
          * {@code :same-tags} tests whether the object has the same tags as its child/parent.
+         * @param e MapCSS environment
+         * @return {@code true} if the object has the same tags as its child/parent
          * @see OsmPrimitive#hasSameInterestingTags(OsmPrimitive)
          */
         static boolean sameTags(Environment e) {
@@ -541,6 +582,8 @@ public abstract class Condition {
 
         /**
          * {@code :area-style} tests whether the object has an area style. This is useful for validators.
+         * @param e MapCSS environment
+         * @return {@code true} if the object has an area style
          * @see ElemStyles#hasAreaElemStyle(OsmPrimitive, boolean)
          */
         static boolean areaStyle(Environment e) {
@@ -550,6 +593,8 @@ public abstract class Condition {
 
         /**
          * {@code unconnected}: tests whether the object is a unconnected node.
+         * @param e MapCSS environment
+         * @return {@code true} if the object is a unconnected node
          */
         static boolean unconnected(Environment e) {
             return e.osm instanceof Node && OsmPrimitive.getFilteredList(e.osm.getReferrers(), Way.class).isEmpty();
@@ -557,6 +602,8 @@ public abstract class Condition {
 
         /**
          * {@code righthandtraffic} checks if there is right-hand traffic at the current location.
+         * @param e MapCSS environment
+         * @return {@code true} if there is right-hand traffic at the current location
          * @see ExpressionFactory.Functions#is_right_hand_traffic(Environment)
          */
         static boolean righthandtraffic(Environment e) {
@@ -565,6 +612,8 @@ public abstract class Condition {
 
         /**
          * {@code unclosed-multipolygon} tests whether the object is an unclosed multipolygon.
+         * @param e MapCSS environment
+         * @return {@code true} if the object is an unclosed multipolygon
          */
         static boolean unclosed_multipolygon(Environment e) {
             return e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon() &&
@@ -576,6 +625,8 @@ public abstract class Condition {
 
         /**
          * {@code in-downloaded-area} tests whether the object is within source area ("downloaded area").
+         * @param e MapCSS environment
+         * @return {@code true} if the object is within source area ("downloaded area")
          * @see InDataSourceArea
          */
         static boolean inDownloadedArea(Environment e) {
@@ -628,7 +679,7 @@ public abstract class Condition {
 
         @Override
         public String toString() {
-            return (not ? "!" : "") + ":" + method.getName();
+            return (not ? "!" : "") + ':' + method.getName();
         }
     }
 
@@ -659,7 +710,7 @@ public abstract class Condition {
 
         @Override
         public String toString() {
-            return "[" + e + "]";
+            return "[" + e + ']';
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
index 8e72238..7bb8581 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
@@ -663,7 +663,7 @@ public final class ExpressionFactory {
         public static Boolean JOSM_search(final Environment env, String searchStr) {
             Match m;
             try {
-                m = SearchCompiler.compile(searchStr, false, false);
+                m = SearchCompiler.compile(searchStr);
             } catch (ParseError ex) {
                 return null;
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
index 26cf049..20ce6a4 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
@@ -87,7 +87,7 @@ public interface Instruction extends StyleKeys {
         @Override
         public String toString() {
             return key + ": " + (val instanceof float[] ? Arrays.toString((float[]) val) :
-                val instanceof String ? "String<"+val+">" : val) + ';';
+                val instanceof String ? "String<"+val+'>' : val) + ';';
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java
index 27326f3..2414645 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/LiteralExpression.java
@@ -27,6 +27,6 @@ public class LiteralExpression implements Expression {
         if (literal instanceof float[]) {
             return Arrays.toString((float[]) literal);
         }
-        return "<" + literal + ">";
+        return "<" + literal + '>';
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
index 6c76e45..3bd4370 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
@@ -603,16 +603,11 @@ void sheet(MapCSSStyleSource sheet):
 
 void rule():
 {
-    List<Selector> selectors = new ArrayList<Selector>();
-    Selector sel;
+    List<Selector> selectors;
     Declaration decl;
 }
 {
-    sel=child_selector() { selectors.add(sel); }
-    (
-        <COMMA> w()
-        sel=child_selector() { selectors.add(sel); }
-    )*
+    selectors=selectors()
     decl=declaration()
     { 
         for (Selector s : selectors) {
@@ -621,6 +616,20 @@ void rule():
     }
 }
 
+List<Selector> selectors():
+{
+    List<Selector> selectors = new ArrayList<Selector>();
+    Selector sel;
+}
+{
+    sel=child_selector() { selectors.add(sel); }
+    (
+        <COMMA> w()
+        sel=child_selector() { selectors.add(sel); }
+    )*
+    { return selectors; }
+}
+
 Selector child_selector() :
 {
     Selector.ChildOrParentSelectorType type = null;
@@ -745,11 +754,16 @@ Condition simple_key_value_condition(Context context) :
     String val;
     float f;
     int i;
+    Condition.KeyMatchType matchType = null;;
     Condition.Op op;
     boolean considerValAsKey = false;
 }
 {
-    key=tag_key() s()
+    (
+        key = regex() s() { matchType = Condition.KeyMatchType.REGEX; }
+    |
+        key=tag_key() s()
+    )
     (
         LOOKAHEAD(3)
             (
@@ -797,7 +811,9 @@ Condition simple_key_value_condition(Context context) :
             s()
             f=float_() { val=Float.toString(f); }
     )
-    { return Condition.createKeyValueCondition(key, val, op, context, considerValAsKey); }
+    { return Condition.KeyMatchType.REGEX == matchType
+            ? Condition.createRegexpKeyRegexpValueCondition(key, val, op)
+            : Condition.createKeyValueCondition(key, val, op, context, considerValAsKey); }
 }
 
 Condition class_or_pseudoclass(Context context) :
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java
index 3ddce72..e81043a 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSRule.java
@@ -69,7 +69,7 @@ public class MapCSSRule implements Comparable<MapCSSRule> {
 
         @Override
         public String toString() {
-            return "Declaration [instructions=" + instructions + ", idx=" + idx + "]";
+            return "Declaration [instructions=" + instructions + ", idx=" + idx + ']';
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
index c6af7fe..c9a443c 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
@@ -84,7 +84,7 @@ public class MapCSSStyleSource extends StyleSource {
     public final MapCSSRuleIndex canvasRules = new MapCSSRuleIndex();       // rules to apply canvas properties
 
     private Color backgroundColorOverride;
-    private String css = null;
+    private String css;
     private ZipFile zipFile;
 
     /**
@@ -99,13 +99,13 @@ public class MapCSSStyleSource extends StyleSource {
     /**
      * Set of all supported MapCSS keys.
      */
-    public static final Set<String> SUPPORTED_KEYS = new HashSet<>();
+    protected static final Set<String> SUPPORTED_KEYS = new HashSet<>();
     static {
         Field[] declaredFields = StyleKeys.class.getDeclaredFields();
         for (Field f : declaredFields) {
             try {
                 SUPPORTED_KEYS.add((String) f.get(null));
-                if (!f.getName().toLowerCase(Locale.ENGLISH).replace("_", "-").equals(f.get(null))) {
+                if (!f.getName().toLowerCase(Locale.ENGLISH).replace('_', '-').equals(f.get(null))) {
                     throw new RuntimeException(f.getName());
                 }
             } catch (IllegalArgumentException | IllegalAccessException ex) {
@@ -308,7 +308,7 @@ public class MapCSSStyleSource extends StyleSource {
             return key;
         }
 
-        private boolean conditionRequiresKeyPresence(KeyMatchType matchType) {
+        private static boolean conditionRequiresKeyPresence(KeyMatchType matchType) {
             return matchType != KeyMatchType.REGEX;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
index 2f7f656..feb3759 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
@@ -127,7 +127,7 @@ public interface Selector {
              * Constructor
              * @param e the environment against which we match
              */
-            public MatchingReferrerFinder(Environment e) {
+            MatchingReferrerFinder(Environment e) {
                 this.e = e;
             }
 
@@ -226,7 +226,7 @@ public interface Selector {
                 w.visitReferrers(innerVisitor);
             }
 
-            public MultipolygonOpenEndFinder(Environment e) {
+            MultipolygonOpenEndFinder(Environment e) {
                 super(e);
             }
 
@@ -244,7 +244,6 @@ public interface Selector {
                     }
                 }
             };
-
         }
 
         private final class CrossingFinder extends AbstractFinder {
@@ -255,7 +254,7 @@ public interface Selector {
 
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment(w))) {
+                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))) {
                     if (e.osm instanceof Way && Geometry.PolygonIntersection.CROSSING.equals(
                             Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes()))) {
                         e.child = w;
@@ -272,7 +271,7 @@ public interface Selector {
 
             @Override
             public void visit(Node n) {
-                if (e.child == null && left.matches(new Environment(n))) {
+                if (e.child == null && left.matches(new Environment(n).withParent(e.osm))) {
                     if (e.osm instanceof Way && Geometry.nodeInsidePolygon(n, ((Way) e.osm).getNodes())
                             || e.osm instanceof Relation && (
                                     (Relation) e.osm).isMultipolygon() && Geometry.isNodeInsideMultiPolygon(n, (Relation) e.osm, null)) {
@@ -283,7 +282,7 @@ public interface Selector {
 
             @Override
             public void visit(Way w) {
-                if (e.child == null && left.matches(new Environment(w))) {
+                if (e.child == null && left.matches(new Environment(w).withParent(e.osm))) {
                     if (e.osm instanceof Way && Geometry.PolygonIntersection.FIRST_INSIDE_SECOND.equals(
                             Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes()))
                             || e.osm instanceof Relation && (
@@ -432,7 +431,7 @@ public interface Selector {
 
         @Override
         public String toString() {
-            return left + " " + (ChildOrParentSelectorType.PARENT.equals(type) ? "<" : ">") + link + " " + right;
+            return left + " " + (ChildOrParentSelectorType.PARENT.equals(type) ? '<' : '>') + link + ' ' + right;
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java b/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java
index 7495562..3ac97f1 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/xml/Prototype.java
@@ -13,7 +13,7 @@ public abstract class Prototype {
 
     public int priority;
     public String code;
-    public Collection<XmlCondition> conditions = null;
+    public Collection<XmlCondition> conditions;
 
     public Prototype(Range range) {
         this.range = range;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java
index 38d5a1e..57e38c3 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlCondition.java
@@ -21,11 +21,11 @@ public class XmlCondition {
 
     public String getKey() {
         if (value != null)
-            return "n" + key + "=" + value;
+            return 'n' + key + '=' + value;
         else if (boolValue != null)
-            return "b" + key  + "=" + OsmUtils.getNamedOsmBoolean(boolValue);
+            return 'b' + key  + '=' + OsmUtils.getNamedOsmBoolean(boolValue);
         else
-            return "x" + key;
+            return 'x' + key;
     }
 
     public final void init() {
@@ -34,7 +34,7 @@ public class XmlCondition {
 
     @Override
     public String toString() {
-      return "Rule["+key+","+(boolValue != null ? "b="+boolValue : "v="+value)+"]";
+      return "Rule["+key+','+(boolValue != null ? "b="+boolValue : "v="+value)+']';
     }
 
     public void appendCode(StringBuilder sb) {
diff --git a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java
index aaa7086..67ab002 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java
@@ -140,7 +140,7 @@ public class XmlStyleSource extends StyleSource implements StyleKeys {
      * @param scale ignored if null, otherwise checks if scale is within the range of candidate
      * @param mc side effect: update the valid region for the current MultiCascade
      */
-    private boolean requiresUpdate(Prototype current, Prototype candidate, Double scale, MultiCascade mc) {
+    private static boolean requiresUpdate(Prototype current, Prototype candidate, Double scale, MultiCascade mc) {
         if (current == null || candidate.priority >= current.priority) {
             if (scale == null)
                 return true;
@@ -161,13 +161,13 @@ public class XmlStyleSource extends StyleSource implements StyleKeys {
         for (String key : primitive.keySet()) {
             String val = primitive.get(key);
             IconPrototype p;
-            if ((p = icons.get("n" + key + "=" + val)) != null) {
+            if ((p = icons.get('n' + key + '=' + val)) != null) {
                 icon = update(icon, p, scale, mc);
             }
-            if ((p = icons.get("b" + key + "=" + OsmUtils.getNamedOsmBoolean(val))) != null) {
+            if ((p = icons.get('b' + key + '=' + OsmUtils.getNamedOsmBoolean(val))) != null) {
                 icon = update(icon, p, scale, mc);
             }
-            if ((p = icons.get("x" + key)) != null) {
+            if ((p = icons.get('x' + key)) != null) {
                 icon = update(icon, p, scale, mc);
             }
         }
@@ -193,7 +193,7 @@ public class XmlStyleSource extends StyleSource implements StyleKeys {
             AreaPrototype styleArea;
             LinePrototype styleLine;
             LinemodPrototype styleLinemod;
-            String idx = "n" + key + "=" + val;
+            String idx = 'n' + key + '=' + val;
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
             }
@@ -208,7 +208,7 @@ public class XmlStyleSource extends StyleSource implements StyleKeys {
                     overlayMap.put(idx, styleLinemod);
                 }
             }
-            idx = "b" + key + "=" + OsmUtils.getNamedOsmBoolean(val);
+            idx = 'b' + key + '=' + OsmUtils.getNamedOsmBoolean(val);
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
             }
@@ -223,7 +223,7 @@ public class XmlStyleSource extends StyleSource implements StyleKeys {
                     overlayMap.put(idx, styleLinemod);
                 }
             }
-            idx = "x" + key;
+            idx = 'x' + key;
             if ((styleArea = areas.get(idx)) != null && (closed || !styleArea.closed) && !isNotArea) {
                 p.area = update(p.area, styleArea, scale, mc);
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java
index 6a51be9..553b5d0 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java
@@ -51,11 +51,11 @@ public class XmlStyleSourceHandler extends DefaultHandler {
         int i = colString.indexOf('#');
         Color ret;
         if (i < 0) {
-            ret = Main.pref.getColor("mappaint."+style.getPrefName()+"."+colString, Color.red);
+            ret = Main.pref.getColor("mappaint."+style.getPrefName()+'.'+colString, Color.red);
         } else if (i == 0) {
             ret = ColorHelper.html2color(colString);
         } else {
-            ret = Main.pref.getColor("mappaint."+style.getPrefName()+"."+colString.substring(0, i),
+            ret = Main.pref.getColor("mappaint."+style.getPrefName()+'.'+colString.substring(0, i),
                     ColorHelper.html2color(colString.substring(i)));
         }
         return ret;
@@ -72,7 +72,7 @@ public class XmlStyleSourceHandler extends DefaultHandler {
     }
 
     private void error(String message) {
-        String warning = style.getDisplayString() + " (" + rule.cond.key + "=" + rule.cond.value + "): " + message;
+        String warning = style.getDisplayString() + " (" + rule.cond.key + '=' + rule.cond.value + "): " + message;
         Main.warn(warning);
         style.logError(new Exception(warning));
     }
diff --git a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
index 419c10e..2f3b55b 100644
--- a/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
+++ b/src/org/openstreetmap/josm/gui/oauth/AuthorizationProcedureComboBox.java
@@ -24,7 +24,7 @@ public class AuthorizationProcedureComboBox extends JosmComboBox<AuthorizationPr
     }
 
     private static class AuthorisationProcedureCellRenderer extends JLabel implements ListCellRenderer<AuthorizationProcedure> {
-        public AuthorisationProcedureCellRenderer() {
+        AuthorisationProcedureCellRenderer() {
             setOpaque(true);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
index 3f1ba72..9a805da 100644
--- a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
@@ -336,7 +336,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      * Starts the authorisation process
      */
     class RunAuthorisationAction extends AbstractAction implements DocumentListener{
-        public RunAuthorisationAction() {
+        RunAuthorisationAction() {
             putValue(NAME, tr("Authorize now"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
             putValue(SHORT_DESCRIPTION, tr("Click to redirect you to the authorization form on the JOSM web site"));
@@ -372,7 +372,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      * Action to go back to step 1 in the process
      */
     class BackAction extends AbstractAction {
-        public BackAction() {
+        BackAction() {
             putValue(NAME, tr("Back"));
             putValue(SHORT_DESCRIPTION, tr("Run the automatic authorization steps again"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "previous"));
@@ -388,7 +388,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      * Action to test an access token.
      */
     class TestAccessTokenAction extends AbstractAction {
-        public TestAccessTokenAction() {
+        TestAccessTokenAction() {
             putValue(NAME, tr("Test Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("logo"));
         }
@@ -405,7 +405,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
     }
 
     private static class UserNameValidator extends AbstractTextComponentValidator {
-        public UserNameValidator(JTextComponent tc) {
+        UserNameValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -426,7 +426,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
 
     private static class PasswordValidator extends AbstractTextComponentValidator {
 
-        public PasswordValidator(JTextComponent tc) {
+        PasswordValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -449,7 +449,7 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
         private boolean canceled;
         private OsmOAuthAuthorizationClient authClient;
 
-        public FullyAutomaticAuthorisationTask(Component parent) {
+        FullyAutomaticAuthorisationTask(Component parent) {
             super(parent, tr("Authorize JOSM to access the OSM API"), false /* don't ignore exceptions */);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
index de87c88..a4e32df 100644
--- a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
+++ b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
@@ -75,7 +75,7 @@ public class FullyAutomaticPropertiesPanel extends JPanel {
 
     private static class UserNameValidator extends AbstractTextComponentValidator {
 
-        public UserNameValidator(JTextComponent tc) {
+        UserNameValidator(JTextComponent tc) {
             super(tc);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
index f98f220..d41ff11 100644
--- a/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
@@ -176,7 +176,7 @@ public class ManualAuthorizationUI extends AbstractAuthorizationUI{
 
     private static class AccessTokenKeyValidator extends AbstractTextComponentValidator {
 
-        public AccessTokenKeyValidator(JTextComponent tc) {
+        AccessTokenKeyValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -196,7 +196,7 @@ public class ManualAuthorizationUI extends AbstractAuthorizationUI{
     }
 
     private static class AccessTokenSecretValidator extends AbstractTextComponentValidator {
-        public AccessTokenSecretValidator(JTextComponent tc) {
+        AccessTokenSecretValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -245,7 +245,7 @@ public class ManualAuthorizationUI extends AbstractAuthorizationUI{
      * Action for testing an Access Token
      */
     class TestAccessTokenAction extends AbstractAction implements PropertyChangeListener {
-        public TestAccessTokenAction() {
+        TestAccessTokenAction() {
             putValue(NAME, tr("Test Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
             putValue(SHORT_DESCRIPTION, tr("Click to test the Access Token"));
diff --git a/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java b/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
index 523a56f..fa48da6 100644
--- a/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
+++ b/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java
@@ -322,7 +322,7 @@ public class OAuthAuthorizationWizard extends JDialog {
         /**
          * Constructs a new {@code CancelAction}.
          */
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close the dialog and cancel authorization"));
@@ -344,7 +344,7 @@ public class OAuthAuthorizationWizard extends JDialog {
         /**
          * Constructs a new {@code AcceptAccessTokenAction}.
          */
-        public AcceptAccessTokenAction() {
+        AcceptAccessTokenAction() {
             putValue(NAME, tr("Accept Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
             putValue(SHORT_DESCRIPTION, tr("Close the dialog and accept the Access Token"));
diff --git a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
index 07a5a74..af8faec 100644
--- a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
@@ -116,7 +116,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
         /**
          * Constructs a new {@code RetrieveRequestTokenPanel}.
          */
-        public RetrieveRequestTokenPanel() {
+        RetrieveRequestTokenPanel() {
             build();
         }
 
@@ -213,7 +213,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
         /**
          * Constructs a new {@code RetrieveAccessTokenPanel}.
          */
-        public RetrieveAccessTokenPanel() {
+        RetrieveAccessTokenPanel() {
             build();
         }
 
@@ -283,7 +283,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
          * Action to go back to step 1 in the process
          */
         class BackAction extends AbstractAction {
-            public BackAction() {
+            BackAction() {
                 putValue(NAME, tr("Back"));
                 putValue(SHORT_DESCRIPTION, tr("Go back to step 1/3"));
                 putValue(SMALL_ICON, ImageProvider.get("dialogs", "previous"));
@@ -304,7 +304,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
         /**
          * Constructs a new {@code ShowAccessTokenPanel}.
          */
-        public ShowAccessTokenPanel() {
+        ShowAccessTokenPanel() {
             build();
         }
 
@@ -361,7 +361,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
          * Action to go back to step 1 in the process
          */
         class RestartAction extends AbstractAction {
-            public RestartAction() {
+            RestartAction() {
                 putValue(NAME, tr("Restart"));
                 putValue(SHORT_DESCRIPTION, tr("Go back to step 1/3"));
                 putValue(SMALL_ICON, ImageProvider.get("dialogs", "previous"));
@@ -383,7 +383,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      */
     class RetrieveRequestTokenAction extends AbstractAction{
 
-        public RetrieveRequestTokenAction() {
+        RetrieveRequestTokenAction() {
             putValue(NAME, tr("Retrieve Request Token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
             putValue(SHORT_DESCRIPTION, tr("Click to retrieve a Request Token"));
@@ -419,7 +419,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      */
     class RetrieveAccessTokenAction extends AbstractAction {
 
-        public RetrieveAccessTokenAction() {
+        RetrieveAccessTokenAction() {
             putValue(NAME, tr("Retrieve Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
             putValue(SHORT_DESCRIPTION, tr("Click to retrieve an Access Token"));
@@ -456,7 +456,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
      */
     class TestAccessTokenAction extends AbstractAction {
 
-        public TestAccessTokenAction() {
+        TestAccessTokenAction() {
             putValue(NAME, tr("Test Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
             putValue(SHORT_DESCRIPTION, tr("Click to test the Access Token"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
index f6f2207..5955dcb 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
@@ -139,7 +139,7 @@ public class PreferenceDialog extends JDialog {
     }
 
     class CancelAction extends AbstractAction {
-        public CancelAction() {
+        CancelAction() {
             putValue(NAME, tr("Cancel"));
             putValue(SMALL_ICON, ImageProvider.get("cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close the preferences dialog and discard preference updates"));
@@ -158,7 +158,7 @@ public class PreferenceDialog extends JDialog {
     }
 
     class OKAction extends AbstractAction {
-        public OKAction() {
+        OKAction() {
             putValue(NAME, tr("OK"));
             putValue(SMALL_ICON, ImageProvider.get("ok"));
             putValue(SHORT_DESCRIPTION, tr("Save the preferences and close the dialog"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceSetting.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceSetting.java
index 7af90b2..1882808 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceSetting.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceSetting.java
@@ -15,6 +15,7 @@ public interface PreferenceSetting {
     /**
      * Called when OK is pressed to save the setting in the preferences file.
      * Return true when restart is required.
+     * @return {@code true} if restart is required
      */
     boolean ok();
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
index 9cb926f..af478da 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
@@ -15,6 +15,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.BorderFactory;
 import javax.swing.Icon;
@@ -75,10 +76,10 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
     private final class PluginDownloadAfterTask implements Runnable {
         private final PluginPreference preference;
         private final PluginDownloadTask task;
-        private final List<PluginInformation> toDownload;
+        private final Set<PluginInformation> toDownload;
 
         private PluginDownloadAfterTask(PluginPreference preference, PluginDownloadTask task,
-                List<PluginInformation> toDownload) {
+                Set<PluginInformation> toDownload) {
             this.preference = preference;
             this.task = task;
             this.toDownload = toDownload;
@@ -412,7 +413,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
         // create a task for downloading plugins if the user has activated, yet not downloaded, new plugins
         //
         final PluginPreference preference = getPluginPreference();
-        final List<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
+        final Set<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
         final PluginDownloadTask task;
         if (toDownload != null && !toDownload.isEmpty()) {
             task = new PluginDownloadTask(this, toDownload, tr("Download plugins"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
index 76b5c60..a00711b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
@@ -150,7 +150,7 @@ public abstract class SourceEditor extends JPanel {
                 super.scrollRectToVisible(new Rectangle(0, aRect.y, aRect.width, aRect.height));
             }
         };
-        tblActiveSources.putClientProperty("terminateEditOnFocusLost", true);
+        tblActiveSources.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
         tblActiveSources.setSelectionModel(selectionModel);
         tblActiveSources.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         tblActiveSources.setShowGrid(false);
@@ -392,16 +392,19 @@ public abstract class SourceEditor extends JPanel {
 
     /**
      * Load the list of source entries that the user has configured.
+     * @return list of source entries that the user has configured
      */
     public abstract Collection<? extends SourceEntry> getInitialSourcesList();
 
     /**
      * Load the list of configured icon paths.
+     * @return list of configured icon paths
      */
     public abstract Collection<String> getInitialIconPathsList();
 
     /**
      * Get the default list of entries (used when resetting the list).
+     * @return default list of entries
      */
     public abstract Collection<ExtendedSourceEntry> getDefault();
 
@@ -446,8 +449,9 @@ public abstract class SourceEditor extends JPanel {
 
     /**
      * Synchronously loads available sources and returns the parsed list.
+     * @return list of available sources
      */
-    Collection<ExtendedSourceEntry> loadAndGetAvailableSources() {
+    public final Collection<ExtendedSourceEntry> loadAndGetAvailableSources() {
         try {
             final SourceLoader loader = new SourceLoader(availableSourcesUrl, sourceProviders);
             loader.realRun();
@@ -465,6 +469,9 @@ public abstract class SourceEditor extends JPanel {
         Main.worker.submit(new SourceLoader(url, sourceProviders));
     }
 
+    /**
+     * Performs the initial loading of source providers. Does nothing if already done.
+     */
     public void initiallyLoadAvailableSources() {
         if (!sourcesInitiallyLoaded) {
             reloadAvailableSources(availableSourcesUrl, sourceProviders);
@@ -683,7 +690,7 @@ public abstract class SourceEditor extends JPanel {
             return title == null ? simpleFileName : title;
         }
 
-        private void appendRow(StringBuilder s, String th, String td) {
+        private static void appendRow(StringBuilder s, String th, String td) {
             s.append("<tr><th>").append(th).append("</th><td>").append(td).append("</td</tr>");
         }
 
@@ -820,7 +827,7 @@ public abstract class SourceEditor extends JPanel {
         }
 
         class LaunchFileChooserAction extends AbstractAction {
-            public LaunchFileChooserAction() {
+            LaunchFileChooserAction() {
                 putValue(SMALL_ICON, ImageProvider.get("open"));
                 putValue(SHORT_DESCRIPTION, tr("Launch a file chooser to select a file"));
             }
@@ -869,7 +876,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class NewActiveSourceAction extends AbstractAction {
-        public NewActiveSourceAction() {
+        NewActiveSourceAction() {
             putValue(NAME, tr("New"));
             putValue(SHORT_DESCRIPTION, getStr(I18nString.NEW_SOURCE_ENTRY_TOOLTIP));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
@@ -887,9 +894,11 @@ public abstract class SourceEditor extends JPanel {
                 if (canEnable) {
                     active = editEntryDialog.active();
                 }
-                activeSourcesModel.addSource(new SourceEntry(
+                final SourceEntry entry = new SourceEntry(
                         editEntryDialog.getURL(),
-                        null, editEntryDialog.getTitle(), active));
+                        null, editEntryDialog.getTitle(), active);
+                entry.title = getTitleForSourceEntry(entry);
+                activeSourcesModel.addSource(entry);
                 activeSourcesModel.fireTableDataChanged();
             }
         }
@@ -897,7 +906,7 @@ public abstract class SourceEditor extends JPanel {
 
     class RemoveActiveSourcesAction extends AbstractAction implements ListSelectionListener {
 
-        public RemoveActiveSourcesAction() {
+        RemoveActiveSourcesAction() {
             putValue(NAME, tr("Remove"));
             putValue(SHORT_DESCRIPTION, getStr(I18nString.REMOVE_SOURCE_TOOLTIP));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
@@ -920,7 +929,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class EditActiveSourceAction extends AbstractAction implements ListSelectionListener {
-        public EditActiveSourceAction() {
+        EditActiveSourceAction() {
             putValue(NAME, tr("Edit"));
             putValue(SHORT_DESCRIPTION, getStr(I18nString.EDIT_SOURCE_TOOLTIP));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
@@ -950,9 +959,7 @@ public abstract class SourceEditor extends JPanel {
             if (editEntryDialog.getValue() == 1) {
                 if (e.title != null || !"".equals(editEntryDialog.getTitle())) {
                     e.title = editEntryDialog.getTitle();
-                    if ("".equals(e.title)) {
-                        e.title = null;
-                    }
+                    e.title = getTitleForSourceEntry(e);
                 }
                 e.url = editEntryDialog.getURL();
                 if (canEnable) {
@@ -969,7 +976,7 @@ public abstract class SourceEditor extends JPanel {
     class MoveUpDownAction extends AbstractAction implements ListSelectionListener, TableModelListener {
         private final int increment;
 
-        public MoveUpDownAction(boolean isDown) {
+        MoveUpDownAction(boolean isDown) {
             increment = isDown ? 1 : -1;
             putValue(SMALL_ICON, isDown ? ImageProvider.get("dialogs", "down") : ImageProvider.get("dialogs", "up"));
             putValue(SHORT_DESCRIPTION, isDown ? tr("Move the selected entry one row down.") : tr("Move the selected entry one row up."));
@@ -997,7 +1004,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class ActivateSourcesAction extends AbstractAction implements ListSelectionListener {
-        public ActivateSourcesAction() {
+        ActivateSourcesAction() {
             putValue(SHORT_DESCRIPTION, getStr(I18nString.ACTIVATE_TOOLTIP));
             putValue(SMALL_ICON, ImageProvider.get("preferences", "activate-right"));
             updateEnabledState();
@@ -1050,7 +1057,7 @@ public abstract class SourceEditor extends JPanel {
 
     class ResetAction extends AbstractAction {
 
-        public ResetAction() {
+        ResetAction() {
             putValue(NAME, tr("Reset"));
             putValue(SHORT_DESCRIPTION, tr("Reset to default"));
             putValue(SMALL_ICON, ImageProvider.get("preferences", "reset"));
@@ -1066,7 +1073,7 @@ public abstract class SourceEditor extends JPanel {
         private final String url;
         private final transient List<SourceProvider> sourceProviders;
 
-        public ReloadSourcesAction(String url, List<SourceProvider> sourceProviders) {
+        ReloadSourcesAction(String url, List<SourceProvider> sourceProviders) {
             putValue(NAME, tr("Reload"));
             putValue(SHORT_DESCRIPTION, tr(getStr(I18nString.RELOAD_ALL_AVAILABLE), url));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
@@ -1184,7 +1191,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class NewIconPathAction extends AbstractAction {
-        public NewIconPathAction() {
+        NewIconPathAction() {
             putValue(NAME, tr("New"));
             putValue(SHORT_DESCRIPTION, tr("Add a new icon path"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
@@ -1198,7 +1205,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class RemoveIconPathAction extends AbstractAction implements ListSelectionListener {
-        public RemoveIconPathAction() {
+        RemoveIconPathAction() {
             putValue(NAME, tr("Remove"));
             putValue(SHORT_DESCRIPTION, tr("Remove the selected icon paths"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
@@ -1221,7 +1228,7 @@ public abstract class SourceEditor extends JPanel {
     }
 
     class EditIconPathAction extends AbstractAction implements ListSelectionListener {
-        public EditIconPathAction() {
+        EditIconPathAction() {
             putValue(NAME, tr("Edit"));
             putValue(SHORT_DESCRIPTION, tr("Edit the selected icon path"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
@@ -1289,7 +1296,7 @@ public abstract class SourceEditor extends JPanel {
         private boolean canceled;
         private final List<ExtendedSourceEntry> sources = new ArrayList<>();
 
-        public SourceLoader(String url, List<SourceProvider> sourceProviders) {
+        SourceLoader(String url, List<SourceProvider> sourceProviders) {
             super(tr(getStr(I18nString.LOADING_SOURCES_FROM), url));
             this.url = url;
             this.sourceProviders = sourceProviders;
@@ -1425,7 +1432,7 @@ public abstract class SourceEditor extends JPanel {
                     fromSourceEntry((SourceEntry) value), isSelected, hasFocus, row, column);
         }
 
-        private String fromSourceEntry(SourceEntry entry) {
+        private static String fromSourceEntry(SourceEntry entry) {
             if (entry == null)
                 return null;
             StringBuilder s = new StringBuilder("<html><b>");
@@ -1477,7 +1484,7 @@ public abstract class SourceEditor extends JPanel {
                     );
         }
 
-        public FileOrUrlCellEditor(boolean isFile) {
+        FileOrUrlCellEditor(boolean isFile) {
             this.isFile = isFile;
             listeners = new CopyOnWriteArrayList<>();
             build();
@@ -1553,7 +1560,7 @@ public abstract class SourceEditor extends JPanel {
         }
 
         class LaunchFileChooserAction extends AbstractAction {
-            public LaunchFileChooserAction() {
+            LaunchFileChooserAction() {
                 putValue(NAME, "...");
                 putValue(SHORT_DESCRIPTION, tr("Launch a file chooser to select a file"));
             }
@@ -1656,4 +1663,8 @@ public abstract class SourceEditor extends JPanel {
                 }
                 );
     }
+
+    protected String getTitleForSourceEntry(SourceEntry entry) {
+        return "".equals(entry.title) ? null : entry.title;
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/SubPreferenceSetting.java b/src/org/openstreetmap/josm/gui/preferences/SubPreferenceSetting.java
index d73c54a..a17d4fe 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SubPreferenceSetting.java
+++ b/src/org/openstreetmap/josm/gui/preferences/SubPreferenceSetting.java
@@ -11,6 +11,7 @@ public interface SubPreferenceSetting extends PreferenceSetting {
 
     /**
      * Returns the preference setting (displayed in the specified preferences tab pane) that contains this preference setting.
+     * @return parent preference setting
      */
     TabPreferenceSetting getTabPreferenceSetting(final PreferenceTabbedPane gui);
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
index 83d0175..9069201 100644
--- a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
+++ b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
@@ -68,7 +68,7 @@ import org.openstreetmap.josm.actions.AdaptableAction;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.actions.ParameterizedAction;
 import org.openstreetmap.josm.actions.ParameterizedActionDecorator;
-import org.openstreetmap.josm.gui.tagging.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -81,7 +81,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
         private final Action action;
         private String name = "";
         private String icon = "";
-        private ImageIcon ico = null;
+        private ImageIcon ico;
         private final Map<String, Object> parameters = new ConcurrentHashMap<>();
 
         public ActionDefinition(Action action) {
@@ -643,7 +643,7 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
 
             private final List<ActionDefinition> actions;
 
-            public ActionTransferable(List<ActionDefinition> actions) {
+            ActionTransferable(List<ActionDefinition> actions) {
                 this.actions = actions;
             }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
index 444a3a9..dabef75 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
@@ -194,7 +194,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
         allData = prepareData(loaded, orig, defaults);
     }
 
-    private File[] askUserForCustomSettingsFiles(boolean saveFileFlag, String title) {
+    private static File[] askUserForCustomSettingsFiles(boolean saveFileFlag, String title) {
         FileFilter filter = new FileFilter() {
             @Override
             public boolean accept(File f) {
@@ -410,7 +410,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
         private final File file;
         private final String type;
 
-        public ImportProfileAction(String name, File file, String type) {
+        ImportProfileAction(String name, File file, String type) {
             super(name);
             this.file = file;
             this.type = type;
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java b/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
index 1ddca91..29327f8 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java
@@ -80,7 +80,7 @@ public class ExportProfileAction extends AbstractAction {
             File sel = fc.getSelectedFile();
             if (!sel.getName().endsWith(".xml")) sel = new File(sel.getAbsolutePath()+".xml");
             if (!sel.getName().startsWith(schemaKey)) {
-                sel = new File(sel.getParentFile().getAbsolutePath()+"/"+schemaKey+"_"+sel.getName());
+                sel = new File(sel.getParentFile().getAbsolutePath()+'/'+schemaKey+'_'+sel.getName());
             }
             return sel;
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java b/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
index edb8c59..e201cfc 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
@@ -137,7 +137,7 @@ public class ListListEditor extends ExtendedDialog {
     }
 
     class NewEntryAction extends AbstractAction {
-        public NewEntryAction() {
+        NewEntryAction() {
             putValue(NAME, tr("New"));
             putValue(SHORT_DESCRIPTION, tr("add entry"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
@@ -150,7 +150,7 @@ public class ListListEditor extends ExtendedDialog {
     }
 
     class RemoveEntryAction extends AbstractAction implements ListSelectionListener {
-        public RemoveEntryAction() {
+        RemoveEntryAction() {
             putValue(NAME, tr("Remove"));
             putValue(SHORT_DESCRIPTION, tr("Remove the selected entry"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java b/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
index f824c9d..9868df1 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
@@ -157,7 +157,7 @@ public class MapListEditor extends ExtendedDialog {
     }
 
     class NewEntryAction extends AbstractAction {
-        public NewEntryAction() {
+        NewEntryAction() {
             putValue(NAME, tr("New"));
             putValue(SHORT_DESCRIPTION, tr("add entry"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
@@ -170,7 +170,7 @@ public class MapListEditor extends ExtendedDialog {
     }
 
     class RemoveEntryAction extends AbstractAction implements ListSelectionListener {
-        public RemoveEntryAction() {
+        RemoveEntryAction() {
             putValue(NAME, tr("Remove"));
             putValue(SHORT_DESCRIPTION, tr("Remove the selected entry"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java b/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
index c781b29..85ed5de 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
@@ -263,7 +263,7 @@ public class PreferencesTable extends JTable {
 
     private class AllSettingsTableModel extends DefaultTableModel {
 
-        public AllSettingsTableModel() {
+        AllSettingsTableModel() {
             setColumnIdentifiers(new String[]{tr("Key"), tr("Value")});
         }
 
@@ -346,7 +346,7 @@ public class PreferencesTable extends JTable {
     }
 
     private static class SettingCellEditor extends DefaultCellEditor {
-        public SettingCellEditor() {
+        SettingCellEditor() {
             super(new JosmTextField());
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
index 7be8ed9..8312354 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
@@ -118,7 +118,7 @@ public class ColorPreference implements SubPreferenceSetting {
             String html = colorMap.get(value);
             Color color = ColorHelper.html2color(html);
             if (color == null) {
-                Main.warn("Unable to get color from '"+html+"' for color preference '"+value+"'");
+                Main.warn("Unable to get color from '"+html+"' for color preference '"+value+'\'');
             }
             row.add(value);
             row.add(color);
@@ -142,7 +142,7 @@ public class ColorPreference implements SubPreferenceSetting {
         return colorMap;
     }
 
-    private String getName(String o) {
+    private static String getName(String o) {
         return Main.pref.getColorName(o);
     }
 
@@ -261,7 +261,7 @@ public class ColorPreference implements SubPreferenceSetting {
     /**
      * Add all missing color entries.
      */
-    private void fixColorPrefixes() {
+    private static void fixColorPrefixes() {
         PaintColors.getColors();
         ConflictColors.getColors();
         Severity.getColors();
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java
index 958a01c..8ba8771 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/LanguagePreference.java
@@ -78,7 +78,7 @@ public class LanguagePreference implements SubPreferenceSetting {
     private static class LanguageComboBoxModel extends DefaultComboBoxModel<Locale> {
         private final List<Locale> data = new ArrayList<>();
 
-        public LanguageComboBoxModel() {
+        LanguageComboBoxModel() {
             data.add(0, null);
             data.addAll(Arrays.asList(I18n.getAvailableTranslations()));
         }
@@ -116,7 +116,7 @@ public class LanguagePreference implements SubPreferenceSetting {
         /**
          * Constructs a new {@code LanguageCellRenderer}.
          */
-        public LanguageCellRenderer() {
+        LanguageCellRenderer() {
             this.dispatch = new DefaultListCellRenderer();
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
index 99eba10..9bb212b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
@@ -88,7 +88,7 @@ public abstract class AddImageryPanel extends JPanel {
 
     protected static String sanitize(String s, ImageryType type) {
         String ret = s;
-        String imageryType = type.getTypeString() + ":";
+        String imageryType = type.getTypeString() + ':';
         if (ret.startsWith(imageryType)) {
             // remove ImageryType from URL
             ret = ret.substring(imageryType.length());
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
index 7631454..4727440 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
@@ -171,7 +171,7 @@ public class CacheContentsPanel extends JPanel {
         });
     }
 
-    private Long getCacheSize(CacheAccess<String, BufferedImageCacheEntry> cache) {
+    private static Long getCacheSize(CacheAccess<String, BufferedImageCacheEntry> cache) {
         ICacheStats stats = cache.getStatistics();
         for (IStats cacheStats: stats.getAuxiliaryCacheStats()) {
             for (IStatElement<?> statElement: cacheStats.getStatElements()) {
@@ -241,7 +241,7 @@ public class CacheContentsPanel extends JPanel {
         return ret;
     }
 
-    private DefaultTableModel getTableModel(final CacheAccess<String, BufferedImageCacheEntry> cache) {
+    private static DefaultTableModel getTableModel(final CacheAccess<String, BufferedImageCacheEntry> cache) {
         final DefaultTableModel tableModel = new DefaultTableModel(
                 getCacheStats(cache),
                 new String[]{tr("Cache name"), tr("Object Count"), tr("Clear")}) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
index ad92bdc..044fa2a 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
@@ -38,7 +38,6 @@ public class CommonSettingsPanel extends JPanel {
     private final JosmComboBox<String> sharpen;
     private final JosmTextField tilecacheDir = new JosmTextField();
     private final JSpinner maxElementsOnDisk;
-    private final JSpinner maxElementsInRam;
     private final JSlider tilesZoom = new JSlider(-2, 2, 0);
 
 
@@ -48,8 +47,6 @@ public class CommonSettingsPanel extends JPanel {
     public CommonSettingsPanel() {
         super(new GridBagLayout());
 
-        this.maxElementsInRam = new JSpinner(new SpinnerNumberModel(
-                AbstractCachedTileSourceLayer.MEMORY_CACHE_SIZE.get().intValue(), 0, Integer.MAX_VALUE, 1));
         this.maxElementsOnDisk = new JSpinner(new SpinnerNumberModel(
                 AbstractCachedTileSourceLayer.MAX_DISK_CACHE_SIZE.get().intValue(), 0, Integer.MAX_VALUE, 1));
 
@@ -97,10 +94,6 @@ public class CommonSettingsPanel extends JPanel {
         add(GBC.glue(5, 0), GBC.std());
         add(this.maxElementsOnDisk, GBC.eol());
 
-        add(new JLabel(tr("Maximum number of objects in memory cache: ")), GBC.std());
-        add(GBC.glue(5, 0), GBC.std());
-        add(this.maxElementsInRam, GBC.eol());
-
         this.tilesZoom.setPaintLabels(true);
         this.tilesZoom.setMajorTickSpacing(2);
         this.tilesZoom.setMinorTickSpacing(1);
@@ -121,7 +114,6 @@ public class CommonSettingsPanel extends JPanel {
         this.sharpen.setSelectedIndex(Math.max(0, Math.min(2, ImageryLayer.PROP_SHARPEN_LEVEL.get())));
         this.tilecacheDir.setText(CachedTileLoaderFactory.PROP_TILECACHE_DIR.get());
         this.maxElementsOnDisk.setValue(AbstractCachedTileSourceLayer.MAX_DISK_CACHE_SIZE.get());
-        this.maxElementsInRam.setValue(AbstractCachedTileSourceLayer.MEMORY_CACHE_SIZE.get());
         this.tilesZoom.setValue(AbstractTileSourceLayer.ZOOM_OFFSET.get());
     }
 
@@ -146,11 +138,6 @@ public class CommonSettingsPanel extends JPanel {
             CachedTileLoaderFactory.PROP_TILECACHE_DIR.put(this.tilecacheDir.getText());
         }
 
-        if (!AbstractCachedTileSourceLayer.MEMORY_CACHE_SIZE.get().equals(this.maxElementsInRam.getValue())) {
-            AbstractCachedTileSourceLayer.MEMORY_CACHE_SIZE.put((Integer) this.maxElementsInRam.getValue());
-            restartRequired = true;
-        }
-
         if (!AbstractTileSourceLayer.ZOOM_OFFSET.get().equals(this.tilesZoom.getValue())) {
             // TODO: make warning about too small MEMORY_CACHE_SIZE?
             AbstractTileSourceLayer.ZOOM_OFFSET.put(this.tilesZoom.getValue());
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
index 2edacd3..74a3ec6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
@@ -98,7 +98,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
         addSettingsSection(p, name, section, GBC.eol());
     }
 
-    private void addSettingsSection(final JPanel p, String name, JPanel section, GBC gbc) {
+    private static void addSettingsSection(final JPanel p, String name, JPanel section, GBC gbc) {
         final JLabel lbl = new JLabel(name);
         lbl.setFont(lbl.getFont().deriveFont(Font.BOLD));
         lbl.setLabelFor(section);
@@ -130,7 +130,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
         pane.addTab(tr("Imagery providers"), imageryProviders);
         pane.addTab(tr("Settings"), buildSettingsPanel());
         pane.addTab(tr("Offset bookmarks"), new OffsetBookmarksPanel(gui));
-        pane.addTab(tr("Cache contents") , new CacheContentsPanel());
+        pane.addTab(tr("Cache contents"), new CacheContentsPanel());
         loadSettings();
         p.add(pane, GBC.std().fill(GBC.BOTH));
     }
@@ -238,7 +238,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
 
             private transient List<ImageryInfo> layers;
 
-            public ImageryURLTableCellRenderer(List<ImageryInfo> layers) {
+            ImageryURLTableCellRenderer(List<ImageryInfo> layers) {
                 this.layers = layers;
             }
 
@@ -479,7 +479,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
 
             private final ImageryInfo.ImageryType type;
 
-            public NewEntryAction(ImageryInfo.ImageryType type) {
+            NewEntryAction(ImageryInfo.ImageryType type) {
                 putValue(NAME, type.toString());
                 putValue(SHORT_DESCRIPTION, tr("Add a new {0} entry by entering the URL", type.toString()));
                 String icon = /* ICON(dialogs/) */ "add";
@@ -541,7 +541,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
             /**
              * Constructs a new {@code RemoveEntryAction}.
              */
-            public RemoveEntryAction() {
+            RemoveEntryAction() {
                 putValue(NAME, tr("Remove"));
                 putValue(SHORT_DESCRIPTION, tr("Remove entry"));
                 putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
@@ -571,7 +571,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
             /**
              * Constructs a new {@code ActivateAction}.
              */
-            public ActivateAction() {
+            ActivateAction() {
                 putValue(NAME, tr("Activate"));
                 putValue(SHORT_DESCRIPTION, tr("copy selected defaults"));
                 putValue(SMALL_ICON, ImageProvider.get("preferences", "activate-down"));
@@ -638,7 +638,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
             /**
              * Constructs a new {@code ReloadAction}.
              */
-            public ReloadAction() {
+            ReloadAction() {
                 putValue(SHORT_DESCRIPTION, tr("reload defaults"));
                 putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
             }
@@ -812,7 +812,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
         /**
          * Constructs a new {@code OffsetBookmarksPanel}.
          */
-        public OffsetBookmarksPanel(final PreferenceTabbedPane gui) {
+        OffsetBookmarksPanel(final PreferenceTabbedPane gui) {
             super(new GridBagLayout());
             final JTable list = new JTable(model) {
                 @Override
@@ -871,7 +871,7 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
             /**
              * Constructs a new {@code OffsetsBookmarksModel}.
              */
-            public OffsetsBookmarksModel() {
+            OffsetsBookmarksModel() {
                 setColumnIdentifiers(new String[] {tr("Projection"), tr("Layer"), tr("Name"), tr("Easting"), tr("Northing")});
             }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java b/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
index 6e7a3b5..e1ae82f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/WMSLayerTree.java
@@ -27,7 +27,7 @@ public class WMSLayerTree {
     private final DefaultTreeModel treeData = new DefaultTreeModel(treeRootNode);
     private final JTree layerTree = new JTree(treeData);
     private final List<WMSImagery.LayerDetails> selectedLayers = new LinkedList<>();
-    private boolean previouslyShownUnsupportedCrsError = false;
+    private boolean previouslyShownUnsupportedCrsError;
 
     /**
      * Returns the root node.
@@ -132,7 +132,7 @@ public class WMSLayerTree {
                     }
                 }
             }
-            layerTree.firePropertyChange("selectedLayers", /*dummy values*/ false , true);
+            layerTree.firePropertyChange("selectedLayers", /*dummy values*/ false, true);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
index 34ef236..6081ed7 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
@@ -20,6 +20,7 @@ import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
@@ -86,7 +87,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
 
         private static final String iconpref = "mappaint.icon.sources";
 
-        public MapPaintSourceEditor() {
+        MapPaintSourceEditor() {
             super(SourceType.MAP_PAINT_STYLE, Main.getJOSMWebsite()+"/styles", styleSourceProviders, true);
         }
 
@@ -159,6 +160,26 @@ public class MapPaintPreference implements SubPreferenceSetting {
             }
         }
 
+        @Override
+        protected String getTitleForSourceEntry(SourceEntry entry) {
+            final String title = getTitleFromSourceEntry(entry);
+            return title != null ? title : super.getTitleForSourceEntry(entry);
+        }
+    }
+
+    public static String getTitleFromSourceEntry(SourceEntry entry) {
+        try {
+            final MapCSSStyleSource css = new MapCSSStyleSource(entry);
+            css.loadStyleSource();
+            if (css.title != null && !css.title.isEmpty()) {
+                return css.title;
+            }
+        } catch (RuntimeException ignore) {
+            if (Main.isTraceEnabled()) {
+                Main.trace(ignore.getMessage());
+            }
+        }
+        return null;
     }
 
     @Override
@@ -237,9 +258,6 @@ public class MapPaintPreference implements SubPreferenceSetting {
                         insertionIdx = i + 1;
                     }
                 }
-            }
-
-            for (SourceEntry def : defaults) {
                 knownDefaults.add(def.url);
             }
             Main.pref.putCollection("mappaint.style.known-defaults", knownDefaults);
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
index 2ff92e4..2ca27ff 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
@@ -27,12 +27,12 @@ import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
 import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.gui.preferences.SourceProvider;
 import org.openstreetmap.josm.gui.preferences.SourceType;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetReader;
 import org.openstreetmap.josm.tools.GBC;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -184,7 +184,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
 
         private static final String iconpref = "taggingpreset.icon.sources";
 
-        public TaggingPresetSourceEditor() {
+        TaggingPresetSourceEditor() {
             super(SourceType.TAGGING_PRESET, Main.getJOSMWebsite()+"/presets", presetSourceProviders, true);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
index 0708d58..e9b357a 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
@@ -111,7 +111,7 @@ public class PluginListPanel extends VerticallyScrollablePanel {
     private class JPluginCheckBox extends JCheckBox {
         public final transient PluginInformation pi;
 
-        public JPluginCheckBox(final PluginInformation pi, boolean selected) {
+        JPluginCheckBox(final PluginInformation pi, boolean selected) {
             this.pi = pi;
             setSelected(selected);
             setToolTipText(formatCheckboxTooltipText(pi));
@@ -126,7 +126,7 @@ public class PluginListPanel extends VerticallyScrollablePanel {
     private class PluginCbActionListener implements ActionListener {
         private final JPluginCheckBox cb;
 
-        public PluginCbActionListener(JPluginCheckBox cb) {
+        PluginCbActionListener(JPluginCheckBox cb) {
             this.cb = cb;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
index 3a312ba..2e3efd9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
@@ -20,6 +20,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -154,7 +155,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
      * is set to true if this preference pane has been selected
      * by the user
      */
-    private boolean pluginPreferencesActivated = false;
+    private boolean pluginPreferencesActivated;
 
     protected JPanel buildSearchFieldPanel() {
         JPanel pnl  = new JPanel(new GridBagLayout());
@@ -270,7 +271,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
      *
      * @return the list of plugins waiting for update or download
      */
-    public List<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
+    public Set<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
         return model != null ? model.getPluginsScheduledForUpdateOrDownload() : null;
     }
 
@@ -328,7 +329,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         /**
          * Constructs a new {@code DownloadAvailablePluginsAction}.
          */
-        public DownloadAvailablePluginsAction() {
+        DownloadAvailablePluginsAction() {
             putValue(NAME, tr("Download list"));
             putValue(SHORT_DESCRIPTION, tr("Download the list of available plugins"));
             putValue(SMALL_ICON, ImageProvider.get("download"));
@@ -364,7 +365,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
      * The action for updating the list of selected plugins
      */
     class UpdateSelectedPluginsAction extends AbstractAction {
-        public UpdateSelectedPluginsAction() {
+        UpdateSelectedPluginsAction() {
             putValue(NAME, tr("Update plugins"));
             putValue(SHORT_DESCRIPTION, tr("Update the selected plugins"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
@@ -466,7 +467,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
      *
      */
     class ConfigureSitesAction extends AbstractAction {
-        public ConfigureSitesAction() {
+        ConfigureSitesAction() {
             putValue(NAME, tr("Configure sites..."));
             putValue(SHORT_DESCRIPTION, tr("Configure the list of sites where plugins are downloaded from"));
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "settings"));
@@ -580,7 +581,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
             add(buttons, GBC.eol());
         }
 
-        public PluginConfigurationSitesPanel() {
+        PluginConfigurationSitesPanel() {
             build();
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
index 65e2ba4..b31fff9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
@@ -164,7 +164,7 @@ public class PluginPreferencesModel extends Observable {
     }
 
     /**
-     * Replies the list of plugin informations to display
+     * Replies the list of plugin informations to display.
      *
      * @return the list of plugin informations to display
      */
@@ -172,14 +172,13 @@ public class PluginPreferencesModel extends Observable {
         return displayedPlugins;
     }
 
-
     /**
-     * Replies the list of plugins waiting for update or download
+     * Replies the set of plugins waiting for update or download.
      *
-     * @return the list of plugins waiting for update or download
+     * @return the set of plugins waiting for update or download
      */
-    public List<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
-        List<PluginInformation> ret = new ArrayList<>();
+    public Set<PluginInformation> getPluginsScheduledForUpdateOrDownload() {
+        Set<PluginInformation> ret = new HashSet<>();
         for (String plugin: pendingDownloads) {
             PluginInformation pi = getPluginInformation(plugin);
             if (pi == null) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
index c3342bf..9916e1e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
@@ -55,7 +55,7 @@ public class CodeProjectionChoice extends AbstractProjectionChoice implements Su
         private String lastCode = DEFAULT_CODE;
         private transient ActionListener listener;
 
-        public CodeSelectionPanel(String initialCode, ActionListener listener) {
+        CodeSelectionPanel(String initialCode, ActionListener listener) {
             this.listener = listener;
             data = new ArrayList<>(Projections.getAllProjectionCodes());
             Collections.sort(data, new CodeComparator());
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
index e9b4963..e3458e9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
@@ -50,7 +50,7 @@ public class CustomProjectionChoice extends AbstractProjectionChoice implements
         public JosmTextField input;
         private HistoryComboBox cbInput;
 
-        public PreferencePanel(String initialText, ActionListener listener) {
+        PreferencePanel(String initialText, ActionListener listener) {
             build(initialText, listener);
         }
 
@@ -163,7 +163,7 @@ public class CustomProjectionChoice extends AbstractProjectionChoice implements
             setContent(build());
         }
 
-        private JComponent build() {
+        private static JComponent build() {
             StringBuilder s = new StringBuilder();
             s.append("<b>+proj=...</b> - <i>").append(tr("Projection name"))
              .append("</i><br>    ").append(tr("Supported values:")).append(' ')
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
index 5a05d85..636efe9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/LambertCC9ZonesProjectionChoice.java
@@ -36,7 +36,7 @@ public class LambertCC9ZonesProjectionChoice extends ListProjectionChoice {
     }
 
     private class LambertCC9CBPanel extends CBPanel {
-        public LambertCC9CBPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
+        LambertCC9CBPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
             super(entries, initialIndex, label, listener);
             this.add(new JLabel(ImageProvider.get("data/projection", "LambertCC9Zones.png")), GBC.eol().fill(GBC.HORIZONTAL));
             this.add(GBC.glue(1, 1), GBC.eol().fill(GBC.BOTH));
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
index 591ab65..f6db9fe 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/LambertProjectionChoice.java
@@ -31,7 +31,7 @@ public class LambertProjectionChoice extends ListProjectionChoice {
     }
 
     private class LambertCBPanel extends CBPanel {
-        public LambertCBPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
+        LambertCBPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
             super(entries, initialIndex, label, listener);
             this.add(new JLabel(ImageProvider.get("data/projection", "Departements_Lambert4Zones.png")), GBC.eol().fill(GBC.HORIZONTAL));
             this.add(GBC.glue(1, 1), GBC.eol().fill(GBC.BOTH));
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
index 3a1ec63..97955c5 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
@@ -470,7 +470,7 @@ public class ProjectionPreference implements SubPreferenceSetting {
         return pc;
     }
 
-    private Collection<String> getSubprojectionPreference(ProjectionChoice pc) {
+    private static Collection<String> getSubprojectionPreference(ProjectionChoice pc) {
         return Main.pref.getCollection("projection.sub."+pc.getId(), null);
     }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
index 1fa1381..cc343df 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/UTMProjectionChoice.java
@@ -50,7 +50,7 @@ public class UTMProjectionChoice extends ListProjectionChoice {
 
         public JRadioButton north, south;
 
-        public UTMPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
+        UTMPanel(String[] entries, int initialIndex, String label, ActionListener listener) {
             super(entries, initialIndex, label, listener);
 
             north = new JRadioButton();
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
index 24730f6..6a7f553 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
@@ -182,7 +182,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
         /**
          * Constructs a new {@code NotYetAuthorisedPanel}.
          */
-        public NotYetAuthorisedPanel() {
+        NotYetAuthorisedPanel() {
             build();
         }
 
@@ -304,7 +304,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
         /**
          * Constructs a new {@code AlreadyAuthorisedPanel}.
          */
-        public AlreadyAuthorisedPanel() {
+        AlreadyAuthorisedPanel() {
             build();
             refreshView();
         }
@@ -314,7 +314,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
      * Action to authorise the current user
      */
     private class AuthoriseNowAction extends AbstractAction {
-        public AuthoriseNowAction() {
+        AuthoriseNowAction() {
             putValue(NAME, tr("Authorize now"));
             putValue(SHORT_DESCRIPTION, tr("Click to step through the OAuth authorization process"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
@@ -343,7 +343,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
         /**
          * Constructs a new {@code RenewAuthorisationAction}.
          */
-        public RenewAuthorisationAction() {
+        RenewAuthorisationAction() {
             putValue(NAME, tr("New Access Token"));
             putValue(SHORT_DESCRIPTION, tr("Click to step through the OAuth authorization process and generate a new Access Token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
@@ -373,7 +373,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
         /**
          * Constructs a new {@code TestAuthorisationAction}.
          */
-        public TestAuthorisationAction() {
+        TestAuthorisationAction() {
             putValue(NAME, tr("Test Access Token"));
             putValue(SHORT_DESCRIPTION, tr("Click test access to the OSM server with the current access token"));
             putValue(SMALL_ICON, ImageProvider.get("oauth", "oauth-small"));
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
index 19392b9..b3dd41c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
@@ -167,9 +167,9 @@ public class OsmApiUrlInputPanel extends JPanel {
     }
 
     class ValidateApiUrlAction extends AbstractAction implements DocumentListener {
-        private String lastTestedUrl = null;
+        private String lastTestedUrl;
 
-        public ValidateApiUrlAction() {
+        ValidateApiUrlAction() {
             putValue(NAME, tr("Validate"));
             putValue(SHORT_DESCRIPTION, tr("Test the API URL"));
             updateEnabledState();
@@ -242,7 +242,7 @@ public class OsmApiUrlInputPanel extends JPanel {
     }
 
     private static class ApiUrlValidator extends AbstractTextComponentValidator {
-        public ApiUrlValidator(JTextComponent tc) {
+        ApiUrlValidator(JTextComponent tc) {
             super(tc);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java b/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
index 973c854..eae076b 100644
--- a/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
@@ -127,7 +127,7 @@ public class PrefJPanel extends JPanel {
         /**
          * Constructs a new {@code ScListModel}.
          */
-        public ScListModel() {
+        ScListModel() {
             data = Shortcut.listAll();
         }
 
@@ -156,7 +156,7 @@ public class PrefJPanel extends JPanel {
 
         private boolean name;
 
-        public ShortcutTableCellRenderer(boolean name) {
+        ShortcutTableCellRenderer(boolean name) {
             this.name = name;
         }
 
@@ -287,7 +287,7 @@ public class PrefJPanel extends JPanel {
     private class CbAction extends AbstractAction implements ListSelectionListener {
         private PrefJPanel panel;
 
-        public CbAction(PrefJPanel panel) {
+        CbAction(PrefJPanel panel) {
             this.panel = panel;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
index e90ba1e..4195980 100644
--- a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreference.java
@@ -24,6 +24,7 @@ import org.openstreetmap.josm.gui.preferences.SourceProvider;
 import org.openstreetmap.josm.gui.preferences.SourceType;
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 
 /**
  * The general validator preferences, allowing to enable/disable tests.
@@ -53,10 +54,10 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
             return ruleSourceProviders.add(provider);
         return false;
     }
-    
+
     static class TagCheckerRulesSourceEditor extends SourceEditor {
 
-        public TagCheckerRulesSourceEditor() {
+        TagCheckerRulesSourceEditor() {
             super(SourceType.TAGCHECKER_RULE, Main.getJOSMWebsite()+"/rules", ruleSourceProviders, false);
         }
 
@@ -113,8 +114,14 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
             default: throw new AssertionError();
             }
         }
+
+        @Override
+        protected String getTitleForSourceEntry(SourceEntry entry) {
+            final String title = MapPaintPreference.getTitleFromSourceEntry(entry);
+            return title != null ? title : super.getTitleForSourceEntry(entry);
+        }
     }
-    
+
     /**
      * Helper class for validator tag checker rules preferences.
      */
@@ -135,7 +142,7 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
         @Override
         public Collection<ExtendedSourceEntry> getDefault() {
             List<ExtendedSourceEntry> def = new ArrayList<>();
-            
+
             addDefault(def, "addresses",    tr("Addresses"),           tr("Checks for errors on addresses"));
             addDefault(def, "combinations", tr("Tag combinations"),    tr("Checks for missing tag or suspicious combinations"));
             addDefault(def, "deprecated",   tr("Deprecated features"), tr("Checks for deprecated features"));
@@ -148,11 +155,11 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
             addDefault(def, "relation",     tr("Relations"),           tr("Checks for errors on relations"));
             addDefault(def, "unnecessary",  tr("Unnecessary tags"),    tr("Checks for unnecessary tags"));
             addDefault(def, "wikipedia",    tr("Wikipedia"),           tr("Checks for wrong wikipedia tags"));
-            
+
             return def;
         }
-        
-        private void addDefault(List<ExtendedSourceEntry> defaults, String filename, String title, String description) {
+
+        private static void addDefault(List<ExtendedSourceEntry> defaults, String filename, String title, String description) {
             ExtendedSourceEntry i = new ExtendedSourceEntry(filename+".mapcss", "resource://data/validator/"+filename+".mapcss");
             i.title = title;
             i.description = description;
@@ -180,7 +187,7 @@ public class ValidatorTagCheckerRulesPreference implements SubPreferenceSetting
     public void addGui(PreferenceTabbedPane gui) {
         final ValidatorPreference valPref = gui.getValidatorPreference();
         sources = new TagCheckerRulesSourceEditor();
-        
+
         valPref.addSubTab(this, tr("Tag checker rules"),
                 sources, tr("Choose Tag checker rules to enable"));
         sources.deferLoading(valPref, sources);
diff --git a/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
index 9136496..6fadf8c 100644
--- a/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
@@ -172,7 +172,7 @@ public abstract class AbstractProgressMonitor implements ProgressMonitor {
     private void resetState() {
         String newTitle;
         if (extraText != null) {
-            newTitle = taskTitle + " " + extraText;
+            newTitle = taskTitle + ' ' + extraText;
         } else {
             newTitle = taskTitle;
         }
diff --git a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
index 7930465..c70700f 100644
--- a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
@@ -40,7 +40,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     public static final int PROGRESS_BAR_MAX = 10000;
     private final Component dialogParent;
 
-    private int currentProgressValue = 0;
+    private int currentProgressValue;
     private String customText;
     private String title;
     private boolean indeterminate;
@@ -52,7 +52,7 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
     private boolean cancelable;
 
-    private void doInEDT(Runnable runnable) {
+    private static void doInEDT(Runnable runnable) {
         // This must be invoke later even if current thread is EDT because inside there is dialog.setVisible
         // which freeze current code flow until modal dialog is closed
         SwingUtilities.invokeLater(runnable);
@@ -173,6 +173,9 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
             @Override
             public void run() {
                 Main.currentProgressMonitor = PleaseWaitProgressMonitor.this;
+                if (GraphicsEnvironment.isHeadless()) {
+                    return;
+                }
                 if (dialogParent != null && dialog == null) {
                     dialog = new PleaseWaitDialog(dialogParent);
                 } else
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
index f2fbab6..fa5148c 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
@@ -133,6 +133,7 @@ public interface ProgressMonitor {
      * Creates subtasks monitor.
      * @param ticks Number of work units that should be done when subtask finishes
      * @param internal If true then subtask can't modify task title/custom text
+     * @return subtasks monitor
      */
     ProgressMonitor createSubTaskMonitor(int ticks, boolean internal);
 
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java b/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java
index d04cb84..74e530d 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java
+++ b/src/org/openstreetmap/josm/gui/progress/ProgressTaskId.java
@@ -6,7 +6,7 @@ public class ProgressTaskId {
     private final String id;
 
     public ProgressTaskId(String component, String task) {
-        this.id = component + "." + task;
+        this.id = component + '.' + task;
     }
 
     public String getId() {
@@ -28,7 +28,5 @@ public class ProgressTaskId {
             return false;
         ProgressTaskId other = (ProgressTaskId) obj;
         return other.id.equals(id);
-
     }
-
 }
diff --git a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
index 9ab4411..b3cc96a 100644
--- a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
@@ -15,7 +15,7 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  */
 public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
     private static final int PROGRESS_BAR_MAX = 100;
-    private int currentProgressValue = 0;
+    private int currentProgressValue;
     private ProgressRenderer delegate;
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java b/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java
index 99eaa3e..efb2741 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java
@@ -18,14 +18,14 @@ import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
  */
 public class TagCellEditor extends AbstractCellEditor implements TableCellEditor{
 
-    protected AutoCompletingTextField editor = null;
-    protected transient TagModel currentTag = null;
+    protected AutoCompletingTextField editor;
+    protected transient TagModel currentTag;
 
     /** the cache of auto completion items derived from the current JOSM data set */
-    protected transient AutoCompletionManager autocomplete = null;
+    protected transient AutoCompletionManager autocomplete;
 
     /** user input is matched against this list of auto completion items */
-    protected AutoCompletionList autoCompletionList = null;
+    protected AutoCompletionList autoCompletionList;
 
     /**
      * constructor
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java b/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java
index 14e0d93..985f3ce 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagCellRenderer.java
@@ -19,8 +19,8 @@ import javax.swing.table.TableCellRenderer;
  *
  */
 public class TagCellRenderer extends JLabel implements TableCellRenderer  {
-    private Font fontStandard = null;
-    private Font fontItalic = null;
+    private Font fontStandard;
+    private Font fontItalic;
 
     /**
      * Constructs a new {@code TagCellRenderer}.
@@ -68,10 +68,6 @@ public class TagCellRenderer extends JLabel implements TableCellRenderer  {
         setFont(fontStandard);
     }
 
-    protected TagEditorModel getModel(JTable table) {
-        return (TagEditorModel) table.getModel();
-    }
-
     /**
      * replies the cell renderer component for a specific cell
      *
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
index 1e003e7..5254947 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
@@ -37,7 +37,7 @@ public class TagEditorModel extends AbstractTableModel {
     protected final transient List<TagModel> tags = new ArrayList<>();
 
     /** indicates whether the model is dirty */
-    private boolean dirty =  false;
+    private boolean dirty;
     private final PropertyChangeSupport propChangeSupport = new PropertyChangeSupport(this);
 
     private DefaultListSelectionModel rowSelectionModel;
@@ -611,7 +611,7 @@ public class TagEditorModel extends AbstractTableModel {
         private int colMin;
         private int colMax;
 
-        public SelectionStateMemento() {
+        SelectionStateMemento() {
             rowMin = rowSelectionModel.getMinSelectionIndex();
             rowMax = rowSelectionModel.getMaxSelectionIndex();
             colMin = colSelectionModel.getMinSelectionIndex();
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java b/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
index e34c0ff..3eef1d6 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
@@ -22,6 +22,8 @@ import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -38,7 +40,7 @@ public class TagEditorPanel extends JPanel {
     private final TagTable tagTable;
 
     private PresetListPanel presetListPanel;
-    private final transient PresetHandler presetHandler;
+    private final transient TaggingPresetHandler presetHandler;
 
     /**
      * builds the panel with the table for editing tags
@@ -139,7 +141,7 @@ public class TagEditorPanel extends JPanel {
      * Creates a new tag editor panel. The editor model is created
      * internally and can be retrieved with {@link #getModel()}.
      */
-    public TagEditorPanel(PresetHandler presetHandler) {
+    public TagEditorPanel(TaggingPresetHandler presetHandler) {
         this(null, presetHandler, 0);
     }
 
@@ -150,7 +152,7 @@ public class TagEditorPanel extends JPanel {
      * @param model the tag editor model
      * @param maxCharacters maximum number of characters allowed, 0 for unlimited
      */
-    public TagEditorPanel(TagEditorModel model, PresetHandler presetHandler, final int maxCharacters) {
+    public TagEditorPanel(TagEditorModel model, TaggingPresetHandler presetHandler, final int maxCharacters) {
         this.model = model;
         this.presetHandler = presetHandler;
         if (this.model == null) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagModel.java b/src/org/openstreetmap/josm/gui/tagging/TagModel.java
index eb342a4..b5c6fc9 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagModel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagModel.java
@@ -7,10 +7,10 @@ import java.util.List;
 public class TagModel {
 
     /** the name of the tag */
-    private String name = null;
+    private String name;
 
     /** the list of values */
-    private List<String> values = null;
+    private List<String> values;
 
     /**
      * constructor
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagTable.java b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
index dd30106..de99deb 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagTable.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
@@ -56,7 +56,7 @@ import org.openstreetmap.josm.tools.Utils;
  */
 public class TagTable extends JTable  {
     /** the table cell editor used by this table */
-    private TagCellEditor editor = null;
+    private TagCellEditor editor;
     private final TagEditorModel model;
     private Component nextFocusComponent;
 
@@ -72,7 +72,7 @@ public class TagTable extends JTable  {
      *
      */
     static class TagTableColumnModel extends DefaultTableColumnModel {
-        public TagTableColumnModel(DefaultListSelectionModel selectionModel) {
+        TagTableColumnModel(DefaultListSelectionModel selectionModel) {
             setSelectionModel(selectionModel);
             TableColumn col = null;
             TagCellRenderer renderer = new TagCellRenderer();
@@ -195,7 +195,7 @@ public class TagTable extends JTable  {
      */
     class DeleteAction extends RunnableAction implements ListSelectionListener {
 
-        public DeleteAction() {
+        DeleteAction() {
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
             putValue(SHORT_DESCRIPTION, tr("Delete the selection in the tag table"));
             getSelectionModel().addListSelectionListener(this);
@@ -284,7 +284,7 @@ public class TagTable extends JTable  {
      *
      */
     class AddAction extends RunnableAction implements PropertyChangeListener{
-        public AddAction() {
+        AddAction() {
             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
             putValue(SHORT_DESCRIPTION, tr("Add a new tag"));
             TagTable.this.addPropertyChangeListener(this);
@@ -319,7 +319,7 @@ public class TagTable extends JTable  {
      * Action to be run when the user wants to paste tags from buffer
      */
     class PasteAction extends RunnableAction implements PropertyChangeListener{
-        public PasteAction() {
+        PasteAction() {
             putValue(SMALL_ICON, ImageProvider.get("", "pastetags"));
             putValue(SHORT_DESCRIPTION, tr("Paste tags from buffer"));
             TagTable.this.addPropertyChangeListener(this);
@@ -366,13 +366,13 @@ public class TagTable extends JTable  {
     }
 
     /** the delete action */
-    private RunnableAction deleteAction = null;
+    private RunnableAction deleteAction;
 
     /** the add action */
-    private RunnableAction addAction = null;
+    private RunnableAction addAction;
 
     /** the tag paste action */
-    private RunnableAction pasteAction = null;
+    private RunnableAction pasteAction;
 
     /**
      *
@@ -617,7 +617,7 @@ public class TagTable extends JTable  {
     class CellEditorRemover implements PropertyChangeListener {
         private KeyboardFocusManager focusManager;
 
-        public CellEditorRemover(KeyboardFocusManager fm) {
+        CellEditorRemover(KeyboardFocusManager fm) {
             this.focusManager = fm;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java b/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java
deleted file mode 100644
index faef79a..0000000
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.JPanel;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Tag;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
-
-/**
- * Class that represents single part of a preset - one field or text label that is shown to user
- * @since 6068
- */
-public abstract class TaggingPresetItem {
-
-    protected void initAutoCompletionField(AutoCompletingTextField field, String... key) {
-        initAutoCompletionField(field, Arrays.asList(key));
-    }
-
-    protected void initAutoCompletionField(AutoCompletingTextField field, List<String> keys) {
-        if (Main.main == null) return;
-        OsmDataLayer layer = Main.main.getEditLayer();
-        if (layer == null) {
-            return;
-        }
-        AutoCompletionList list = new AutoCompletionList();
-        layer.data.getAutoCompletionManager().populateWithTagValues(list, keys);
-        field.setAutoCompletionList(list);
-    }
-
-    /**
-     * Called by {@link TaggingPreset#createPanel} during tagging preset panel creation.
-     * All components defining this tagging preset item must be added to given panel.
-     *
-     * @param p The panel where components must be added
-     * @param sel The related selected OSM primitives
-     * @param presetInitiallyMatches Whether this {@link TaggingPreset} already matched before applying,
-     *                               i.e. whether the map feature already existed on the primitive.
-     * @return {@code true} if this item adds semantic tagging elements, {@code false} otherwise.
-     */
-    abstract boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches);
-
-    /**
-     * Adds the new tags to apply to selected OSM primitives when the preset holding this item is applied.
-     * @param changedTags The list of changed tags to modify if needed
-     */
-    abstract void addCommands(List<Tag> changedTags);
-
-    boolean requestFocusInWindow() {
-        return false;
-    }
-
-    /**
-     * Tests whether the tags match this item.
-     * Note that for a match, at least one positive and no negative is required.
-     * @param tags the tags of an {@link OsmPrimitive}
-     * @return {@code true} if matches (positive), {@code null} if neutral, {@code false} if mismatches (negative).
-     */
-    Boolean matches(Map<String, String> tags) {
-        return null;
-    }
-}
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java b/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
deleted file mode 100644
index 96a4149..0000000
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
+++ /dev/null
@@ -1,1593 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trc;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.GridBagLayout;
-import java.awt.GridLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.File;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import javax.swing.AbstractButton;
-import javax.swing.BorderFactory;
-import javax.swing.ButtonGroup;
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JSeparator;
-import javax.swing.JToggleButton;
-import javax.swing.ListCellRenderer;
-import javax.swing.ListModel;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.OsmUtils;
-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.AutoCompletionItemPriority;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
-import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-import org.openstreetmap.josm.gui.widgets.JosmTextField;
-import org.openstreetmap.josm.gui.widgets.QuadStateCheckBox;
-import org.openstreetmap.josm.gui.widgets.UrlLabel;
-import org.openstreetmap.josm.tools.AlphanumComparator;
-import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
-import org.xml.sax.SAXException;
-
-/**
- * Class that contains all subtypes of TaggingPresetItem, static supplementary data, types and methods
- * @since 6068
- */
-public final class TaggingPresetItems {
-    private TaggingPresetItems() {
-    }
-
-    private static int auto_increment_selected = 0;
-    /** Translatation of "<different>". Use in combo boxes to display en entry matching several different values. */
-    public static final String DIFFERENT = tr("<different>");
-
-    private static final BooleanProperty PROP_FILL_DEFAULT = new BooleanProperty("taggingpreset.fill-default-for-tagged-primitives", false);
-
-    // cache the parsing of types using a LRU cache (http://java-planet.blogspot.com/2005/08/how-to-set-up-simple-lru-cache-using.html)
-    private static final Map<String, Set<TaggingPresetType>> TYPE_CACHE = new LinkedHashMap<>(16, 1.1f, true);
-
-    /**
-     * Last value of each key used in presets, used for prefilling corresponding fields
-     */
-    private static final Map<String, String> LAST_VALUES = new HashMap<>();
-
-    public static class PresetListEntry implements Comparable<PresetListEntry> {
-        public String value;
-        /** The context used for translating {@link #value} */
-        public String value_context;
-        public String display_value;
-        public String short_description;
-        /** The location of icon file to display */
-        public String icon;
-        /** The size of displayed icon. If not set, default is size from icon file */
-        public String icon_size;
-        /** The localized version of {@link #display_value}. */
-        public String locale_display_value;
-        /** The localized version of {@link #short_description}. */
-        public String locale_short_description;
-        private final File zipIcons = TaggingPresetReader.getZipIcons();
-
-        // Cached size (currently only for Combo) to speed up preset dialog initialization
-        private int prefferedWidth = -1;
-        private int prefferedHeight = -1;
-
-        public String getListDisplay() {
-            if (value.equals(DIFFERENT))
-                return "<b>"+DIFFERENT.replaceAll("<", "<").replaceAll(">", ">")+"</b>";
-
-            if (value.isEmpty())
-                return " ";
-
-            final StringBuilder res = new StringBuilder("<b>");
-            res.append(getDisplayValue(true).replaceAll("<", "<").replaceAll(">", ">"))
-               .append("</b>");
-            if (getShortDescription(true) != null) {
-                // wrap in table to restrict the text width
-                res.append("<div style=\"width:300px; padding:0 0 5px 5px\">")
-                   .append(getShortDescription(true))
-                   .append("</div>");
-            }
-            return res.toString();
-        }
-
-        /**
-         * Returns the entry icon, if any.
-         * @return the entry icon, or {@code null}
-         */
-        public ImageIcon getIcon() {
-            return icon == null ? null : loadImageIcon(icon, zipIcons, parseInteger(icon_size));
-        }
-
-        /**
-         * Constructs a new {@code PresetListEntry}, uninitialized.
-         */
-        public PresetListEntry() {
-        }
-
-        public PresetListEntry(String value) {
-            this.value = value;
-        }
-
-        public String getDisplayValue(boolean translated) {
-            return translated
-                    ? Utils.firstNonNull(locale_display_value, tr(display_value), trc(value_context, value))
-                            : Utils.firstNonNull(display_value, value);
-        }
-
-        public String getShortDescription(boolean translated) {
-            return translated
-                    ? Utils.firstNonNull(locale_short_description, tr(short_description))
-                            : short_description;
-        }
-
-        // toString is mainly used to initialize the Editor
-        @Override
-        public String toString() {
-            if (value.equals(DIFFERENT))
-                return DIFFERENT;
-            return getDisplayValue(true).replaceAll("<.*>", ""); // remove additional markup, e.g. <br>
-        }
-
-        @Override
-        public int compareTo(PresetListEntry o) {
-            return AlphanumComparator.getInstance().compare(this.getDisplayValue(true), o.getDisplayValue(true));
-        }
-    }
-
-    public static class Role {
-        public Set<TaggingPresetType> types;
-        public String key;
-        /** The text to display */
-        public String text;
-        /** The context used for translating {@link #text} */
-        public String text_context;
-        /** The localized version of {@link #text}. */
-        public String locale_text;
-        public SearchCompiler.Match memberExpression;
-
-        public boolean required = false;
-        private long count = 0;
-
-        public void setType(String types) throws SAXException {
-            this.types = getType(types);
-        }
-
-        public void setRequisite(String str) throws SAXException {
-            if ("required".equals(str)) {
-                required = true;
-            } else if (!"optional".equals(str))
-                throw new SAXException(tr("Unknown requisite: {0}", str));
-        }
-
-        public void setMember_expression(String member_expression) throws SAXException {
-            try {
-                this.memberExpression = SearchCompiler.compile(member_expression, true, true);
-            } catch (SearchCompiler.ParseError ex) {
-                throw new SAXException(tr("Illegal member expression: {0}", ex.getMessage()), ex);
-            }
-        }
-
-        public void setCount(String count) {
-            this.count = Long.parseLong(count);
-        }
-
-        /**
-         * Return either argument, the highest possible value or the lowest allowed value
-         */
-        public long getValidCount(long c) {
-            if (count > 0 && !required)
-                return c != 0 ? count : 0;
-            else if (count > 0)
-                return count;
-            else if (!required)
-                return c != 0 ? c : 0;
-            else
-                return c != 0 ? c : 1;
-        }
-
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
-            String cstring;
-            if (count > 0 && !required) {
-                cstring = "0,"+count;
-            } else if (count > 0) {
-                cstring = String.valueOf(count);
-            } else if (!required) {
-                cstring = "0-...";
-            } else {
-                cstring = "1-...";
-            }
-            if (locale_text == null) {
-                locale_text = getLocaleText(text, text_context, null);
-            }
-            p.add(new JLabel(locale_text+":"), GBC.std().insets(0, 0, 10, 0));
-            p.add(new JLabel(key), GBC.std().insets(0, 0, 10, 0));
-            p.add(new JLabel(cstring), types == null ? GBC.eol() : GBC.std().insets(0, 0, 10, 0));
-            if (types != null) {
-                JPanel pp = new JPanel();
-                for (TaggingPresetType t : types) {
-                    pp.add(new JLabel(ImageProvider.get(t.getIconName())));
-                }
-                p.add(pp, GBC.eol());
-            }
-            return true;
-        }
-    }
-
-    /**
-     * Enum denoting how a match (see {@link TaggingPresetItem#matches}) is performed.
-     */
-    public static enum MatchType {
-
-        /** Neutral, i.e., do not consider this item for matching. */
-        NONE("none"),
-        /** Positive if key matches, neutral otherwise. */
-        KEY("key"),
-        /** Positive if key matches, negative otherwise. */
-        KEY_REQUIRED("key!"),
-        /** Positive if key and value matches, neutral otherwise. */
-        KEY_VALUE("keyvalue"),
-        /** Positive if key and value matches, negative otherwise. */
-        KEY_VALUE_REQUIRED("keyvalue!");
-
-        private final String value;
-
-        MatchType(String value) {
-            this.value = value;
-        }
-
-        /**
-         * Replies the associated textual value.
-         * @return the associated textual value
-         */
-        public String getValue() {
-            return value;
-        }
-
-        /**
-         * Determines the {@code MatchType} for the given textual value.
-         * @param type the textual value
-         * @return the {@code MatchType} for the given textual value
-         */
-        public static MatchType ofString(String type) {
-            for (MatchType i : EnumSet.allOf(MatchType.class)) {
-                if (i.getValue().equals(type))
-                    return i;
-            }
-            throw new IllegalArgumentException(type + " is not allowed");
-        }
-    }
-
-    public static class Usage {
-        private SortedSet<String> values;
-        private boolean hadKeys = false;
-        private boolean hadEmpty = false;
-
-        public boolean hasUniqueValue() {
-            return values.size() == 1 && !hadEmpty;
-        }
-
-        public boolean unused() {
-            return values.isEmpty();
-        }
-
-        public String getFirst() {
-            return values.first();
-        }
-
-        public boolean hadKeys() {
-            return hadKeys;
-        }
-    }
-
-    /**
-     * A tagging preset item displaying a localizable text.
-     * @since 6190
-     */
-    public abstract static class TaggingPresetTextItem extends TaggingPresetItem {
-
-        /** The text to display */
-        public String text;
-
-        /** The context used for translating {@link #text} */
-        public String text_context;
-
-        /** The localized version of {@link #text} */
-        public String locale_text;
-
-        protected final void initializeLocaleText(String defaultText) {
-            if (locale_text == null) {
-                locale_text = getLocaleText(text, text_context, defaultText);
-            }
-        }
-
-        @Override
-        void addCommands(List<Tag> changedTags) {
-        }
-
-        protected String fieldsToString() {
-            return (text != null ? "text=" + text + ", " : "")
-                    + (text_context != null ? "text_context=" + text_context + ", " : "")
-                    + (locale_text != null ? "locale_text=" + locale_text : "");
-        }
-
-        @Override
-        public String toString() {
-            return getClass().getSimpleName() + " [" + fieldsToString() + "]";
-        }
-    }
-
-    /**
-     * Label type.
-     */
-    public static class Label extends TaggingPresetTextItem {
-
-        /** The location of icon file to display (optional) */
-        public String icon;
-        /** The size of displayed icon. If not set, default is 16px */
-        public String icon_size;
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            initializeLocaleText(null);
-            addLabel(p, getIcon(), locale_text);
-            return true;
-        }
-
-        /**
-         * Adds a new {@code JLabel} to the given panel.
-         * @param p The panel
-         * @param icon the icon (optional, can be null)
-         * @param label The text label
-         */
-        public static void addLabel(JPanel p, Icon icon, String label) {
-            p.add(new JLabel(label, icon, JLabel.LEADING), GBC.eol().fill(GBC.HORIZONTAL));
-        }
-
-        /**
-         * Returns the label icon, if any.
-         * @return the label icon, or {@code null}
-         */
-        public ImageIcon getIcon() {
-            Integer size = parseInteger(icon_size);
-            return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), size != null ? size : 16);
-        }
-    }
-
-    /**
-     * Hyperlink type.
-     */
-    public static class Link extends TaggingPresetTextItem {
-
-        /** The link to display. */
-        public String href;
-
-        /** The localized version of {@link #href}. */
-        public String locale_href;
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            initializeLocaleText(tr("More information about this feature"));
-            String url = locale_href;
-            if (url == null) {
-                url = href;
-            }
-            if (url != null) {
-                p.add(new UrlLabel(url, locale_text, 2), GBC.eol().insets(0, 10, 0, 0).fill(GBC.HORIZONTAL));
-            }
-            return false;
-        }
-
-        @Override
-        protected String fieldsToString() {
-            return super.fieldsToString()
-                    + (href != null ? "href=" + href + ", " : "")
-                    + (locale_href != null ? "locale_href=" + locale_href + ", " : "");
-        }
-    }
-
-    public static class PresetLink extends TaggingPresetItem {
-
-        public String preset_name = "";
-
-        @Override
-        boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            final String presetName = preset_name;
-            final TaggingPreset t = Utils.filter(TaggingPresets.getTaggingPresets(), new Predicate<TaggingPreset>() {
-                @Override
-                public boolean evaluate(TaggingPreset object) {
-                    return presetName.equals(object.name);
-                }
-            }).iterator().next();
-            if (t == null) return false;
-            JLabel lbl = new PresetLabel(t);
-            lbl.addMouseListener(new MouseAdapter() {
-                @Override
-                public void mouseClicked(MouseEvent arg0) {
-                    t.actionPerformed(null);
-                }
-            });
-            p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
-            return false;
-        }
-
-        @Override
-        void addCommands(List<Tag> changedTags) {
-        }
-    }
-
-    public static class Roles extends TaggingPresetItem {
-
-        public final List<Role> roles = new LinkedList<>();
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            p.add(new JLabel(" "), GBC.eol()); // space
-            if (!roles.isEmpty()) {
-                JPanel proles = new JPanel(new GridBagLayout());
-                proles.add(new JLabel(tr("Available roles")), GBC.std().insets(0, 0, 10, 0));
-                proles.add(new JLabel(tr("role")), GBC.std().insets(0, 0, 10, 0));
-                proles.add(new JLabel(tr("count")), GBC.std().insets(0, 0, 10, 0));
-                proles.add(new JLabel(tr("elements")), GBC.eol());
-                for (Role i : roles) {
-                    i.addToPanel(proles, sel);
-                }
-                p.add(proles, GBC.eol());
-            }
-            return false;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-        }
-    }
-
-    public static class Optional extends TaggingPresetTextItem {
-
-        // TODO: Draw a box around optional stuff
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            initializeLocaleText(tr("Optional Attributes:"));
-            p.add(new JLabel(" "), GBC.eol()); // space
-            p.add(new JLabel(locale_text), GBC.eol());
-            p.add(new JLabel(" "), GBC.eol()); // space
-            return false;
-        }
-    }
-
-    /**
-     * Horizontal separator type.
-     */
-    public static class Space extends TaggingPresetItem {
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            p.add(new JLabel(" "), GBC.eol()); // space
-            return false;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-        }
-
-        @Override
-        public String toString() {
-            return "Space";
-        }
-    }
-
-    /**
-     * Class used to represent a {@link JSeparator} inside tagging preset window.
-     * @since 6198
-     */
-    public static class ItemSeparator extends TaggingPresetItem {
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            p.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL).insets(0, 5, 0, 5));
-            return false;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-        }
-
-        @Override
-        public String toString() {
-            return "ItemSeparator";
-        }
-    }
-
-    /**
-     * Preset item associated to an OSM key.
-     */
-    public abstract static class KeyedItem extends TaggingPresetItem {
-
-        public String key;
-        /** The text to display */
-        public String text;
-        /** The context used for translating {@link #text} */
-        public String text_context;
-        public String match = getDefaultMatch().getValue();
-
-        public abstract MatchType getDefaultMatch();
-
-        public abstract Collection<String> getValues();
-
-        @Override
-        Boolean matches(Map<String, String> tags) {
-            switch (MatchType.ofString(match)) {
-            case NONE:
-                return null;
-            case KEY:
-                return tags.containsKey(key) ? Boolean.TRUE : null;
-            case KEY_REQUIRED:
-                return tags.containsKey(key);
-            case KEY_VALUE:
-                return tags.containsKey(key) && getValues().contains(tags.get(key)) ? Boolean.TRUE : null;
-            case KEY_VALUE_REQUIRED:
-                return tags.containsKey(key) && getValues().contains(tags.get(key));
-            default:
-                throw new IllegalStateException();
-            }
-        }
-
-        @Override
-        public String toString() {
-            return "KeyedItem [key=" + key + ", text=" + text
-                    + ", text_context=" + text_context + ", match=" + match
-                    + "]";
-        }
-    }
-
-    /**
-     * Invisible type allowing to hardcode an OSM key/value from the preset definition.
-     */
-    public static class Key extends KeyedItem {
-
-        /** The hardcoded value for key */
-        public String value;
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            return false;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-            changedTags.add(new Tag(key, value));
-        }
-
-        @Override
-        public MatchType getDefaultMatch() {
-            return MatchType.KEY_VALUE_REQUIRED;
-        }
-
-        @Override
-        public Collection<String> getValues() {
-            return Collections.singleton(value);
-        }
-
-        @Override
-        public String toString() {
-            return "Key [key=" + key + ", value=" + value + ", text=" + text
-                    + ", text_context=" + text_context + ", match=" + match
-                    + "]";
-        }
-    }
-
-    /**
-     * Text field type.
-     */
-    public static class Text extends KeyedItem {
-
-        /** The localized version of {@link #text}. */
-        public String locale_text;
-        public String default_;
-        public String originalValue;
-        public String use_last_as_default = "false";
-        public String auto_increment;
-        public String length;
-        public String alternative_autocomplete_keys;
-
-        private JComponent value;
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-
-            // find out if our key is already used in the selection.
-            Usage usage = determineTextUsage(sel, key);
-            AutoCompletingTextField textField = new AutoCompletingTextField();
-            if (alternative_autocomplete_keys != null) {
-                initAutoCompletionField(textField, (key + "," + alternative_autocomplete_keys).split(","));
-            } else {
-                initAutoCompletionField(textField, key);
-            }
-            if (Main.pref.getBoolean("taggingpreset.display-keys-as-hint", true)) {
-                textField.setHint(key);
-            }
-            if (length != null && !length.isEmpty()) {
-                textField.setMaxChars(Integer.valueOf(length));
-            }
-            if (usage.unused()) {
-                if (auto_increment_selected != 0  && auto_increment != null) {
-                    try {
-                        textField.setText(Integer.toString(Integer.parseInt(LAST_VALUES.get(key)) + auto_increment_selected));
-                    } catch (NumberFormatException ex) {
-                        // Ignore - cannot auto-increment if last was non-numeric
-                        if (Main.isTraceEnabled()) {
-                            Main.trace(ex.getMessage());
-                        }
-                    }
-                } else if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
-                    // selected osm primitives are untagged or filling default values feature is enabled
-                    if (!"false".equals(use_last_as_default) && LAST_VALUES.containsKey(key) && !presetInitiallyMatches) {
-                        textField.setText(LAST_VALUES.get(key));
-                    } else {
-                        textField.setText(default_);
-                    }
-                } else {
-                    // selected osm primitives are tagged and filling default values feature is disabled
-                    textField.setText("");
-                }
-                value = textField;
-                originalValue = null;
-            } else if (usage.hasUniqueValue()) {
-                // all objects use the same value
-                textField.setText(usage.getFirst());
-                value = textField;
-                originalValue = usage.getFirst();
-            } else {
-                // the objects have different values
-                JosmComboBox<String> comboBox = new JosmComboBox<>(usage.values.toArray(new String[0]));
-                comboBox.setEditable(true);
-                comboBox.setEditor(textField);
-                comboBox.getEditor().setItem(DIFFERENT);
-                value = comboBox;
-                originalValue = DIFFERENT;
-            }
-            if (locale_text == null) {
-                locale_text = getLocaleText(text, text_context, null);
-            }
-
-            // if there's an auto_increment setting, then wrap the text field
-            // into a panel, appending a number of buttons.
-            // auto_increment has a format like -2,-1,1,2
-            // the text box being the first component in the panel is relied
-            // on in a rather ugly fashion further down.
-            if (auto_increment != null) {
-                ButtonGroup bg = new ButtonGroup();
-                JPanel pnl = new JPanel(new GridBagLayout());
-                pnl.add(value, GBC.std().fill(GBC.HORIZONTAL));
-
-                // first, one button for each auto_increment value
-                for (final String ai : auto_increment.split(",")) {
-                    JToggleButton aibutton = new JToggleButton(ai);
-                    aibutton.setToolTipText(tr("Select auto-increment of {0} for this field", ai));
-                    aibutton.setMargin(new java.awt.Insets(0, 0, 0, 0));
-                    aibutton.setFocusable(false);
-                    saveHorizontalSpace(aibutton);
-                    bg.add(aibutton);
-                    try {
-                        // TODO there must be a better way to parse a number like "+3" than this.
-                        final int buttonvalue = (NumberFormat.getIntegerInstance().parse(ai.replace("+", ""))).intValue();
-                        if (auto_increment_selected == buttonvalue) aibutton.setSelected(true);
-                        aibutton.addActionListener(new ActionListener() {
-                            @Override
-                            public void actionPerformed(ActionEvent e) {
-                                auto_increment_selected = buttonvalue;
-                            }
-                        });
-                        pnl.add(aibutton, GBC.std());
-                    } catch (ParseException x) {
-                        Main.error("Cannot parse auto-increment value of '" + ai + "' into an integer");
-                    }
-                }
-
-                // an invisible toggle button for "release" of the button group
-                final JToggleButton clearbutton = new JToggleButton("X");
-                clearbutton.setVisible(false);
-                clearbutton.setFocusable(false);
-                bg.add(clearbutton);
-                // and its visible counterpart. - this mechanism allows us to
-                // have *no* button selected after the X is clicked, instead
-                // of the X remaining selected
-                JButton releasebutton = new JButton("X");
-                releasebutton.setToolTipText(tr("Cancel auto-increment for this field"));
-                releasebutton.setMargin(new java.awt.Insets(0, 0, 0, 0));
-                releasebutton.setFocusable(false);
-                releasebutton.addActionListener(new ActionListener() {
-                    @Override
-                    public void actionPerformed(ActionEvent e) {
-                        auto_increment_selected = 0;
-                        clearbutton.setSelected(true);
-                    }
-                });
-                saveHorizontalSpace(releasebutton);
-                pnl.add(releasebutton, GBC.eol());
-                value = pnl;
-            }
-            p.add(new JLabel(locale_text+":"), GBC.std().insets(0, 0, 10, 0));
-            p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
-            return true;
-        }
-
-        private static void saveHorizontalSpace(AbstractButton button) {
-            Insets insets = button.getBorder().getBorderInsets(button);
-            // Ensure the current look&feel does not waste horizontal space (as seen in Nimbus & Aqua)
-            if (insets != null && insets.left+insets.right > insets.top+insets.bottom) {
-                int min = Math.min(insets.top, insets.bottom);
-                button.setBorder(BorderFactory.createEmptyBorder(insets.top, min, insets.bottom, min));
-            }
-        }
-
-        private static String getValue(Component comp) {
-            if (comp instanceof JosmComboBox) {
-                return ((JosmComboBox<?>) comp).getEditor().getItem().toString();
-            } else if (comp instanceof JosmTextField) {
-                return ((JosmTextField) comp).getText();
-            } else if (comp instanceof JPanel) {
-                return getValue(((JPanel) comp).getComponent(0));
-            } else {
-                return null;
-            }
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-
-            // return if unchanged
-            String v = getValue(value);
-            if (v == null) {
-                Main.error("No 'last value' support for component " + value);
-                return;
-            }
-
-            v = Tag.removeWhiteSpaces(v);
-
-            if (!"false".equals(use_last_as_default) || auto_increment != null) {
-                LAST_VALUES.put(key, v);
-            }
-            if (v.equals(originalValue) || (originalValue == null && v.isEmpty()))
-                return;
-
-            changedTags.add(new Tag(key, v));
-            AutoCompletionManager.rememberUserInput(key, v, true);
-        }
-
-        @Override
-        boolean requestFocusInWindow() {
-            return value.requestFocusInWindow();
-        }
-
-        @Override
-        public MatchType getDefaultMatch() {
-            return MatchType.NONE;
-        }
-
-        @Override
-        public Collection<String> getValues() {
-            if (default_ == null || default_.isEmpty())
-                return Collections.emptyList();
-            return Collections.singleton(default_);
-        }
-    }
-
-    /**
-     * A group of {@link Check}s.
-     * @since 6114
-     */
-    public static class CheckGroup extends TaggingPresetItem {
-
-        /**
-         * Number of columns (positive integer)
-         */
-        public String columns;
-
-        /**
-         * List of checkboxes
-         */
-        public final List<Check> checks = new LinkedList<>();
-
-        @Override
-        boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-            Integer cols = Integer.valueOf(columns);
-            int rows = (int) Math.ceil(checks.size()/cols.doubleValue());
-            JPanel panel = new JPanel(new GridLayout(rows, cols));
-
-            for (Check check : checks) {
-                check.addToPanel(panel, sel, presetInitiallyMatches);
-            }
-
-            p.add(panel, GBC.eol());
-            return false;
-        }
-
-        @Override
-        void addCommands(List<Tag> changedTags) {
-            for (Check check : checks) {
-                check.addCommands(changedTags);
-            }
-        }
-
-        @Override
-        Boolean matches(Map<String, String> tags) {
-            for (Check check : checks) {
-                if (Boolean.TRUE.equals(check.matches(tags))) {
-                    return true;
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public String toString() {
-            return "CheckGroup [columns=" + columns + "]";
-        }
-    }
-
-    /**
-     * Checkbox type.
-     */
-    public static class Check extends KeyedItem {
-
-        /** The localized version of {@link #text}. */
-        public String locale_text;
-        /** the value to set when checked (default is "yes") */
-        public String value_on = OsmUtils.trueval;
-        /** the value to set when unchecked (default is "no") */
-        public String value_off = OsmUtils.falseval;
-        /** whether the off value is disabled in the dialog, i.e., only unset or yes are provided */
-        public boolean disable_off = false;
-        /** ticked on/off (default is "off") */
-        public boolean default_ = false; // only used for tagless objects
-
-        private QuadStateCheckBox check;
-        private QuadStateCheckBox.State initialState;
-        private boolean def;
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-
-            // find out if our key is already used in the selection.
-            final Usage usage = determineBooleanUsage(sel, key);
-            final String oneValue = usage.values.isEmpty() ? null : usage.values.last();
-            def = default_;
-
-            if (locale_text == null) {
-                locale_text = getLocaleText(text, text_context, null);
-            }
-
-            if (usage.values.size() < 2 && (oneValue == null || value_on.equals(oneValue) || value_off.equals(oneValue))) {
-                if (def && !PROP_FILL_DEFAULT.get()) {
-                    // default is set and filling default values feature is disabled - check if all primitives are untagged
-                    for (OsmPrimitive s : sel) {
-                        if (s.hasKeys()) {
-                            def = false;
-                        }
-                    }
-                }
-
-                // all selected objects share the same value which is either true or false or unset,
-                // we can display a standard check box.
-                initialState = value_on.equals(oneValue)
-                        ? QuadStateCheckBox.State.SELECTED
-                        : value_off.equals(oneValue)
-                        ? QuadStateCheckBox.State.NOT_SELECTED
-                        : def
-                        ? QuadStateCheckBox.State.SELECTED
-                        : QuadStateCheckBox.State.UNSET;
-            } else {
-                def = false;
-                // the objects have different values, or one or more objects have something
-                // else than true/false. we display a quad-state check box
-                // in "partial" state.
-                initialState = QuadStateCheckBox.State.PARTIAL;
-            }
-
-            final List<QuadStateCheckBox.State> allowedStates = new ArrayList<>(4);
-            if (QuadStateCheckBox.State.PARTIAL.equals(initialState))
-                allowedStates.add(QuadStateCheckBox.State.PARTIAL);
-            allowedStates.add(QuadStateCheckBox.State.SELECTED);
-            if (!disable_off || value_off.equals(oneValue))
-                allowedStates.add(QuadStateCheckBox.State.NOT_SELECTED);
-            allowedStates.add(QuadStateCheckBox.State.UNSET);
-            check = new QuadStateCheckBox(locale_text, initialState,
-                    allowedStates.toArray(new QuadStateCheckBox.State[allowedStates.size()]));
-
-            p.add(check, GBC.eol().fill(GBC.HORIZONTAL));
-            return true;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-            // if the user hasn't changed anything, don't create a command.
-            if (check.getState() == initialState && !def) return;
-
-            // otherwise change things according to the selected value.
-            changedTags.add(new Tag(key,
-                    check.getState() == QuadStateCheckBox.State.SELECTED ? value_on :
-                        check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? value_off :
-                            null));
-        }
-
-        @Override
-        boolean requestFocusInWindow() {
-            return check.requestFocusInWindow();
-        }
-
-        @Override
-        public MatchType getDefaultMatch() {
-            return MatchType.NONE;
-        }
-
-        @Override
-        public Collection<String> getValues() {
-            return disable_off ? Arrays.asList(value_on) : Arrays.asList(value_on, value_off);
-        }
-
-        @Override
-        public String toString() {
-            return "Check ["
-                    + (locale_text != null ? "locale_text=" + locale_text + ", " : "")
-                    + (value_on != null ? "value_on=" + value_on + ", " : "")
-                    + (value_off != null ? "value_off=" + value_off + ", " : "")
-                    + "default_=" + default_ + ", "
-                    + (check != null ? "check=" + check + ", " : "")
-                    + (initialState != null ? "initialState=" + initialState
-                            + ", " : "") + "def=" + def + "]";
-        }
-    }
-
-    /**
-     * Abstract superclass for combo box and multi-select list types.
-     */
-    public abstract static class ComboMultiSelect extends KeyedItem {
-
-        /** The localized version of {@link #text}. */
-        public String locale_text;
-        public String values;
-        public String values_from;
-        /** The context used for translating {@link #values} */
-        public String values_context;
-        public String display_values;
-        /** The localized version of {@link #display_values}. */
-        public String locale_display_values;
-        public String short_descriptions;
-        /** The localized version of {@link #short_descriptions}. */
-        public String locale_short_descriptions;
-        public String default_;
-        public String delimiter = ";";
-        public String use_last_as_default = "false";
-        /** whether to use values for search via {@link TaggingPresetSelector} */
-        public String values_searchable = "false";
-
-        protected JComponent component;
-        protected final Map<String, PresetListEntry> lhm = new LinkedHashMap<>();
-        private boolean initialized = false;
-        protected Usage usage;
-        protected Object originalValue;
-
-        protected abstract Object getSelectedItem();
-
-        protected abstract void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches);
-
-        protected char getDelChar() {
-            return delimiter.isEmpty() ? ';' : delimiter.charAt(0);
-        }
-
-        @Override
-        public Collection<String> getValues() {
-            initListEntries();
-            return lhm.keySet();
-        }
-
-        public Collection<String> getDisplayValues() {
-            initListEntries();
-            return Utils.transform(lhm.values(), new Utils.Function<PresetListEntry, String>() {
-                @Override
-                public String apply(PresetListEntry x) {
-                    return x.getDisplayValue(true);
-                }
-            });
-        }
-
-        @Override
-        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-
-            initListEntries();
-
-            // find out if our key is already used in the selection.
-            usage = determineTextUsage(sel, key);
-            if (!usage.hasUniqueValue() && !usage.unused()) {
-                lhm.put(DIFFERENT, new PresetListEntry(DIFFERENT));
-            }
-
-            p.add(new JLabel(tr("{0}:", locale_text)), GBC.std().insets(0, 0, 10, 0));
-            addToPanelAnchor(p, default_, presetInitiallyMatches);
-
-            return true;
-
-        }
-
-        private void initListEntries() {
-            if (initialized) {
-                lhm.remove(DIFFERENT); // possibly added in #addToPanel
-                return;
-            } else if (lhm.isEmpty()) {
-                initListEntriesFromAttributes();
-            } else {
-                if (values != null) {
-                    Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
-                            + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
-                            key, text, "values", "list_entry"));
-                }
-                if (display_values != null || locale_display_values != null) {
-                    Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
-                            + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
-                            key, text, "display_values", "list_entry"));
-                }
-                if (short_descriptions != null || locale_short_descriptions != null) {
-                    Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
-                            + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
-                            key, text, "short_descriptions", "list_entry"));
-                }
-                for (PresetListEntry e : lhm.values()) {
-                    if (e.value_context == null) {
-                        e.value_context = values_context;
-                    }
-                }
-            }
-            if (locale_text == null) {
-                locale_text = getLocaleText(text, text_context, null);
-            }
-            initialized = true;
-        }
-
-        private void initListEntriesFromAttributes() {
-            char delChar = getDelChar();
-
-            String[] value_array = null;
-
-            if (values_from != null) {
-                String[] class_method = values_from.split("#");
-                if (class_method != null && class_method.length == 2) {
-                    try {
-                        Method method = Class.forName(class_method[0]).getMethod(class_method[1]);
-                        // Check method is public static String[] methodName()
-                        int mod = method.getModifiers();
-                        if (Modifier.isPublic(mod) && Modifier.isStatic(mod)
-                                && method.getReturnType().equals(String[].class) && method.getParameterTypes().length == 0) {
-                            value_array = (String[]) method.invoke(null);
-                        } else {
-                            Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is not \"{2}\"", key, text,
-                                    "public static String[] methodName()"));
-                        }
-                    } catch (Exception e) {
-                        Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' threw {2} ({3})", key, text,
-                                e.getClass().getName(), e.getMessage()));
-                    }
-                }
-            }
-
-            if (value_array == null) {
-                value_array = splitEscaped(delChar, values);
-            }
-
-            final String displ = Utils.firstNonNull(locale_display_values, display_values);
-            String[] display_array = displ == null ? value_array : splitEscaped(delChar, displ);
-
-            final String descr = Utils.firstNonNull(locale_short_descriptions, short_descriptions);
-            String[] short_descriptions_array = descr == null ? null : splitEscaped(delChar, descr);
-
-            if (display_array.length != value_array.length) {
-                Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''",
-                                key, text));
-                display_array = value_array;
-            }
-
-            if (short_descriptions_array != null && short_descriptions_array.length != value_array.length) {
-                Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''",
-                                key, text));
-                short_descriptions_array = null;
-            }
-
-            final List<PresetListEntry> entries = new ArrayList<>(value_array.length);
-            for (int i = 0; i < value_array.length; i++) {
-                final PresetListEntry e = new PresetListEntry(value_array[i]);
-                e.locale_display_value = locale_display_values != null
-                        ? display_array[i]
-                        : trc(values_context, fixPresetString(display_array[i]));
-                if (short_descriptions_array != null) {
-                    e.locale_short_description = locale_short_descriptions != null
-                            ? short_descriptions_array[i]
-                            : tr(fixPresetString(short_descriptions_array[i]));
-                }
-
-                entries.add(e);
-            }
-
-            if (Main.pref.getBoolean("taggingpreset.sortvalues", true)) {
-                Collections.sort(entries);
-            }
-
-            for (PresetListEntry i : entries) {
-                lhm.put(i.value, i);
-            }
-
-        }
-
-        protected String getDisplayIfNull() {
-            return null;
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-            Object obj = getSelectedItem();
-            String display = (obj == null) ? null : obj.toString();
-            String value = null;
-            if (display == null) {
-                display = getDisplayIfNull();
-            }
-
-            if (display != null) {
-                for (Entry<String, PresetListEntry> entry : lhm.entrySet()) {
-                    String k = entry.getValue().toString();
-                    if (k != null && k.equals(display)) {
-                        value = entry.getKey();
-                        break;
-                    }
-                }
-                if (value == null) {
-                    value = display;
-                }
-            } else {
-                value = "";
-            }
-            value = Tag.removeWhiteSpaces(value);
-
-            // no change if same as before
-            if (originalValue == null) {
-                if (value.isEmpty())
-                    return;
-            } else if (value.equals(originalValue.toString()))
-                return;
-
-            if (!"false".equals(use_last_as_default)) {
-                LAST_VALUES.put(key, value);
-            }
-            changedTags.add(new Tag(key, value));
-        }
-
-        public void addListEntry(PresetListEntry e) {
-            lhm.put(e.value, e);
-        }
-
-        public void addListEntries(Collection<PresetListEntry> e) {
-            for (PresetListEntry i : e) {
-                addListEntry(i);
-            }
-        }
-
-        @Override
-        boolean requestFocusInWindow() {
-            return component.requestFocusInWindow();
-        }
-
-        private static final ListCellRenderer<PresetListEntry> RENDERER = new ListCellRenderer<PresetListEntry>() {
-
-            private final JLabel lbl = new JLabel();
-
-            @Override
-            public Component getListCellRendererComponent(JList<? extends PresetListEntry> list, PresetListEntry item, int index,
-                    boolean isSelected, boolean cellHasFocus) {
-
-                // Only return cached size, item is not shown
-                if (!list.isShowing() && item.prefferedWidth != -1 && item.prefferedHeight != -1) {
-                    if (index == -1) {
-                        lbl.setPreferredSize(new Dimension(item.prefferedWidth, 10));
-                    } else {
-                        lbl.setPreferredSize(new Dimension(item.prefferedWidth, item.prefferedHeight));
-                    }
-                    return lbl;
-                }
-
-                lbl.setPreferredSize(null);
-
-                if (isSelected) {
-                    lbl.setBackground(list.getSelectionBackground());
-                    lbl.setForeground(list.getSelectionForeground());
-                } else {
-                    lbl.setBackground(list.getBackground());
-                    lbl.setForeground(list.getForeground());
-                }
-
-                lbl.setOpaque(true);
-                lbl.setFont(lbl.getFont().deriveFont(Font.PLAIN));
-                lbl.setText("<html>" + item.getListDisplay() + "</html>");
-                lbl.setIcon(item.getIcon());
-                lbl.setEnabled(list.isEnabled());
-
-                // Cache size
-                item.prefferedWidth = lbl.getPreferredSize().width;
-                item.prefferedHeight = lbl.getPreferredSize().height;
-
-                // We do not want the editor to have the maximum height of all
-                // entries. Return a dummy with bogus height.
-                if (index == -1) {
-                    lbl.setPreferredSize(new Dimension(lbl.getPreferredSize().width, 10));
-                }
-                return lbl;
-            }
-        };
-
-        protected ListCellRenderer<PresetListEntry> getListCellRenderer() {
-            return RENDERER;
-        }
-
-        @Override
-        public MatchType getDefaultMatch() {
-            return MatchType.NONE;
-        }
-    }
-
-    /**
-     * Combobox type.
-     */
-    public static class Combo extends ComboMultiSelect {
-
-        public boolean editable = true;
-        protected JosmComboBox<PresetListEntry> combo;
-        public String length;
-
-        /**
-         * Constructs a new {@code Combo}.
-         */
-        public Combo() {
-            delimiter = ",";
-        }
-
-        @Override
-        protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
-            if (!usage.unused()) {
-                for (String s : usage.values) {
-                    if (!lhm.containsKey(s)) {
-                        lhm.put(s, new PresetListEntry(s));
-                    }
-                }
-            }
-            if (def != null && !lhm.containsKey(def)) {
-                lhm.put(def, new PresetListEntry(def));
-            }
-            lhm.put("", new PresetListEntry(""));
-
-            combo = new JosmComboBox<>(lhm.values().toArray(new PresetListEntry[0]));
-            component = combo;
-            combo.setRenderer(getListCellRenderer());
-            combo.setEditable(editable);
-            combo.reinitialize(lhm.values());
-            AutoCompletingTextField tf = new AutoCompletingTextField();
-            initAutoCompletionField(tf, key);
-            if (Main.pref.getBoolean("taggingpreset.display-keys-as-hint", true)) {
-                tf.setHint(key);
-            }
-            if (length != null && !length.isEmpty()) {
-                tf.setMaxChars(Integer.valueOf(length));
-            }
-            AutoCompletionList acList = tf.getAutoCompletionList();
-            if (acList != null) {
-                acList.add(getDisplayValues(), AutoCompletionItemPriority.IS_IN_STANDARD);
-            }
-            combo.setEditor(tf);
-
-            if (usage.hasUniqueValue()) {
-                // all items have the same value (and there were no unset items)
-                originalValue = lhm.get(usage.getFirst());
-                combo.setSelectedItem(originalValue);
-            } else if (def != null && usage.unused()) {
-                // default is set and all items were unset
-                if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
-                    // selected osm primitives are untagged or filling default feature is enabled
-                    combo.setSelectedItem(lhm.get(def).getDisplayValue(true));
-                } else {
-                    // selected osm primitives are tagged and filling default feature is disabled
-                    combo.setSelectedItem("");
-                }
-                originalValue = lhm.get(DIFFERENT);
-            } else if (usage.unused()) {
-                // all items were unset (and so is default)
-                originalValue = lhm.get("");
-                if ("force".equals(use_last_as_default) && LAST_VALUES.containsKey(key) && !presetInitiallyMatches) {
-                    combo.setSelectedItem(lhm.get(LAST_VALUES.get(key)));
-                } else {
-                    combo.setSelectedItem(originalValue);
-                }
-            } else {
-                originalValue = lhm.get(DIFFERENT);
-                combo.setSelectedItem(originalValue);
-            }
-            p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
-
-        }
-
-        @Override
-        protected Object getSelectedItem() {
-            return combo.getSelectedItem();
-
-        }
-
-        @Override
-        protected String getDisplayIfNull() {
-            if (combo.isEditable())
-                return combo.getEditor().getItem().toString();
-            else
-                return null;
-        }
-    }
-
-    /**
-     * Multi-select list type.
-     */
-    public static class MultiSelect extends ComboMultiSelect {
-
-        /**
-         * Number of rows to display (positive integer, optional).
-         */
-        public String rows;
-        protected ConcatenatingJList list;
-
-        @Override
-        protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
-            list = new ConcatenatingJList(delimiter, lhm.values().toArray(new PresetListEntry[0]));
-            component = list;
-            ListCellRenderer<PresetListEntry> renderer = getListCellRenderer();
-            list.setCellRenderer(renderer);
-
-            if (usage.hasUniqueValue() && !usage.unused()) {
-                originalValue = usage.getFirst();
-                list.setSelectedItem(originalValue);
-            } else if (def != null && !usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
-                originalValue = DIFFERENT;
-                list.setSelectedItem(def);
-            } else if (usage.unused()) {
-                originalValue = null;
-                list.setSelectedItem(originalValue);
-            } else {
-                originalValue = DIFFERENT;
-                list.setSelectedItem(originalValue);
-            }
-
-            JScrollPane sp = new JScrollPane(list);
-            // if a number of rows has been specified in the preset,
-            // modify preferred height of scroll pane to match that row count.
-            if (rows != null) {
-                double height = renderer.getListCellRendererComponent(list,
-                        new PresetListEntry("x"), 0, false, false).getPreferredSize().getHeight() * Integer.parseInt(rows);
-                sp.setPreferredSize(new Dimension((int) sp.getPreferredSize().getWidth(), (int) height));
-            }
-            p.add(sp, GBC.eol().fill(GBC.HORIZONTAL));
-        }
-
-        @Override
-        protected Object getSelectedItem() {
-            return list.getSelectedItem();
-        }
-
-        @Override
-        public void addCommands(List<Tag> changedTags) {
-            // Do not create any commands if list has been disabled because of an unknown value (fix #8605)
-            if (list.isEnabled()) {
-                super.addCommands(changedTags);
-            }
-        }
-    }
-
-    /**
-    * Class that allows list values to be assigned and retrieved as a comma-delimited
-    * string (extracted from TaggingPreset)
-    */
-    private static class ConcatenatingJList extends JList<PresetListEntry> {
-        private String delimiter;
-
-        public ConcatenatingJList(String del, PresetListEntry[] o) {
-            super(o);
-            delimiter = del;
-        }
-
-        public void setSelectedItem(Object o) {
-            if (o == null) {
-                clearSelection();
-            } else {
-                String s = o.toString();
-                Set<String> parts = new TreeSet<>(Arrays.asList(s.split(delimiter)));
-                ListModel<PresetListEntry> lm = getModel();
-                int[] intParts = new int[lm.getSize()];
-                int j = 0;
-                for (int i = 0; i < lm.getSize(); i++) {
-                    final String value = lm.getElementAt(i).value;
-                    if (parts.contains(value)) {
-                        intParts[j++] = i;
-                        parts.remove(value);
-                    }
-                }
-                setSelectedIndices(Arrays.copyOf(intParts, j));
-                // check if we have actually managed to represent the full
-                // value with our presets. if not, cop out; we will not offer
-                // a selection list that threatens to ruin the value.
-                setEnabled(parts.isEmpty());
-            }
-        }
-
-        public String getSelectedItem() {
-            ListModel<PresetListEntry> lm = getModel();
-            int[] si = getSelectedIndices();
-            StringBuilder builder = new StringBuilder();
-            for (int i = 0; i < si.length; i++) {
-                if (i > 0) {
-                    builder.append(delimiter);
-                }
-                builder.append(lm.getElementAt(si[i]).value);
-            }
-            return builder.toString();
-        }
-    }
-
-    public static Set<TaggingPresetType> getType(String types) throws SAXException {
-        if (types == null || types.isEmpty()) {
-            throw new SAXException(tr("Unknown type: {0}", types));
-        }
-        if (TYPE_CACHE.containsKey(types))
-            return TYPE_CACHE.get(types);
-        Set<TaggingPresetType> result = EnumSet.noneOf(TaggingPresetType.class);
-        for (String type : Arrays.asList(types.split(","))) {
-            try {
-                TaggingPresetType presetType = TaggingPresetType.fromString(type);
-                result.add(presetType);
-            } catch (IllegalArgumentException e) {
-                throw new SAXException(tr("Unknown type: {0}", type), e);
-            }
-        }
-        TYPE_CACHE.put(types, result);
-        return result;
-    }
-
-    static String fixPresetString(String s) {
-        return s == null ? s : s.replaceAll("'", "''");
-    }
-
-    private static String getLocaleText(String text, String text_context, String defaultText) {
-        if (text == null) {
-            return defaultText;
-        } else if (text_context != null) {
-            return trc(text_context, fixPresetString(text));
-        } else {
-            return tr(fixPresetString(text));
-        }
-    }
-
-    /**
-     * allow escaped comma in comma separated list:
-     * "A\, B\, C,one\, two" --> ["A, B, C", "one, two"]
-     * @param delimiter the delimiter, e.g. a comma. separates the entries and
-     *      must be escaped within one entry
-     * @param s the string
-     */
-    private static String[] splitEscaped(char delimiter, String s) {
-        if (s == null)
-            return new String[0];
-        List<String> result = new ArrayList<>();
-        boolean backslash = false;
-        StringBuilder item = new StringBuilder();
-        for (int i = 0; i < s.length(); i++) {
-            char ch = s.charAt(i);
-            if (backslash) {
-                item.append(ch);
-                backslash = false;
-            } else if (ch == '\\') {
-                backslash = true;
-            } else if (ch == delimiter) {
-                result.add(item.toString());
-                item.setLength(0);
-            } else {
-                item.append(ch);
-            }
-        }
-        if (item.length() > 0) {
-            result.add(item.toString());
-        }
-        return result.toArray(new String[result.size()]);
-    }
-
-    static Usage determineTextUsage(Collection<OsmPrimitive> sel, String key) {
-        Usage returnValue = new Usage();
-        returnValue.values = new TreeSet<>();
-        for (OsmPrimitive s : sel) {
-            String v = s.get(key);
-            if (v != null) {
-                returnValue.values.add(v);
-            } else {
-                returnValue.hadEmpty = true;
-            }
-            if (s.hasKeys()) {
-                returnValue.hadKeys = true;
-            }
-        }
-        return returnValue;
-    }
-
-    static Usage determineBooleanUsage(Collection<OsmPrimitive> sel, String key) {
-
-        Usage returnValue = new Usage();
-        returnValue.values = new TreeSet<>();
-        for (OsmPrimitive s : sel) {
-            String booleanValue = OsmUtils.getNamedOsmBoolean(s.get(key));
-            if (booleanValue != null) {
-                returnValue.values.add(booleanValue);
-            }
-        }
-        return returnValue;
-    }
-
-    protected static ImageIcon loadImageIcon(String iconName, File zipIcons, Integer maxSize) {
-        final Collection<String> s = Main.pref.getCollection("taggingpreset.icon.sources", null);
-        ImageProvider imgProv = new ImageProvider(iconName).setDirs(s).setId("presets").setArchive(zipIcons).setOptional(true);
-        if (maxSize != null) {
-            imgProv.setMaxSize(maxSize);
-        }
-        return imgProv.get();
-    }
-
-    protected static Integer parseInteger(String str) {
-        if (str == null || str.isEmpty())
-            return null;
-        try {
-            return Integer.valueOf(str);
-        } catch (Exception e) {
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
-        }
-        return null;
-    }
-}
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
index 2bf8078..74ad719 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
@@ -46,13 +46,13 @@ public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem>
      */
     class AutoCompletingComboBoxDocument extends PlainDocument {
         private final JosmComboBox<AutoCompletionListItem> comboBox;
-        private boolean selecting = false;
+        private boolean selecting;
 
         /**
          * Constructs a new {@code AutoCompletingComboBoxDocument}.
          * @param comboBox the combobox
          */
-        public AutoCompletingComboBoxDocument(final JosmComboBox<AutoCompletionListItem> comboBox) {
+        AutoCompletingComboBoxDocument(final JosmComboBox<AutoCompletionListItem> comboBox) {
             this.comboBox = comboBox;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
index 4ea3f59..a00a700 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
@@ -118,9 +118,9 @@ public class AutoCompletingTextField extends JosmTextField implements ComboBoxEd
     }
 
     /** the auto completion list user input is matched against */
-    protected AutoCompletionList autoCompletionList = null;
+    protected AutoCompletionList autoCompletionList;
     /** a string which should not be auto completed */
-    protected String noAutoCompletionString = null;
+    protected String noAutoCompletionString;
 
     @Override
     protected Document createDefaultModel() {
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionItemPriority.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionItemPriority.java
index 08e0471..ab0549e 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionItemPriority.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionItemPriority.java
@@ -105,6 +105,7 @@ public class AutoCompletionItemPriority implements Comparable<AutoCompletionItem
     /**
      * Merges two priorities.
      * The resulting priority is always >= the original ones.
+     * @return the merged priority
      */
     public AutoCompletionItemPriority mergeWith(AutoCompletionItemPriority other) {
         return new AutoCompletionItemPriority(
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
index 6b729a1..e58bb10 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
@@ -32,11 +32,11 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
 public class AutoCompletionList extends AbstractTableModel {
 
     /** the bare list of AutoCompletionItems */
-    private transient List<AutoCompletionListItem> list = null;
+    private transient List<AutoCompletionListItem> list;
     /**  the filtered list of AutoCompletionItems */
-    private transient ArrayList<AutoCompletionListItem> filtered = null;
+    private transient ArrayList<AutoCompletionListItem> filtered;
     /** the filter expression */
-    private String filter = null;
+    private String filter;
     /** map from value to priority */
     private transient Map<String, AutoCompletionListItem> valutToItemMap;
 
@@ -230,7 +230,6 @@ public class AutoCompletionList extends AbstractTableModel {
         filtered.clear();
         if (filter == null) {
             // Collections.copy throws an exception "Source does not fit in dest"
-            // Collections.copy(filtered, list);
             filtered.ensureCapacity(list.size());
             for (AutoCompletionListItem item: list) {
                 filtered.add(item);
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
index 00a61bc..f0a362f 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
@@ -27,10 +27,12 @@ import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
-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.TaggingPresetItems.Role;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Utils;
@@ -215,8 +217,8 @@ public class AutoCompletionManager implements DataSetListener {
     }
 
     protected static void cachePresetItem(TaggingPreset p, TaggingPresetItem item) {
-        if (item instanceof TaggingPresetItems.KeyedItem) {
-            TaggingPresetItems.KeyedItem ki = (TaggingPresetItems.KeyedItem) item;
+        if (item instanceof KeyedItem) {
+            KeyedItem ki = (KeyedItem) item;
             if (ki.key != null && ki.getValues() != null) {
                 try {
                     PRESET_TAG_CACHE.putAll(ki.key, ki.getValues());
@@ -224,15 +226,15 @@ public class AutoCompletionManager implements DataSetListener {
                     Main.error(p + ": Unable to cache " + ki);
                 }
             }
-        } else if (item instanceof TaggingPresetItems.Roles) {
-            TaggingPresetItems.Roles r = (TaggingPresetItems.Roles) item;
-            for (TaggingPresetItems.Role i : r.roles) {
+        } else if (item instanceof Roles) {
+            Roles r = (Roles) item;
+            for (Role i : r.roles) {
                 if (i.key != null) {
                     PRESET_ROLE_CACHE.add(i.key);
                 }
             }
-        } else if (item instanceof TaggingPresetItems.CheckGroup) {
-            for (TaggingPresetItems.KeyedItem check : ((TaggingPresetItems.CheckGroup) item).checks) {
+        } else if (item instanceof CheckGroup) {
+            for (KeyedItem check : ((CheckGroup) item).checks) {
                 cachePresetItem(p, check);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/tagging/package-info.java b/src/org/openstreetmap/josm/gui/tagging/package-info.java
index a594a15..eb134cf 100644
--- a/src/org/openstreetmap/josm/gui/tagging/package-info.java
+++ b/src/org/openstreetmap/josm/gui/tagging/package-info.java
@@ -1,7 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 
 /**
- * Provides classes for handling edition of OSM tags: tagging presets, tag tables, tag editors.
- * Autocompletion of tags is dealt with a subpackage.
+ * Provides classes for handling edition of OSM tags: tag tables, tag editors.
+ * Autocompletion of tags and tagging presets are dealt with a subpackage.
  */
 package org.openstreetmap.josm.gui.tagging;
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
similarity index 86%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
index 7ef09d6..cf180f2 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
@@ -25,6 +25,7 @@ import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.ImageIcon;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JToggleButton;
 import javax.swing.SwingUtilities;
@@ -42,13 +43,18 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Link;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.PresetLink;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Role;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Key;
+import org.openstreetmap.josm.gui.tagging.presets.items.Label;
+import org.openstreetmap.josm.gui.tagging.presets.items.Link;
+import org.openstreetmap.josm.gui.tagging.presets.items.Optional;
+import org.openstreetmap.josm.gui.tagging.presets.items.PresetLink;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
+import org.openstreetmap.josm.gui.tagging.presets.items.Space;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -74,13 +80,17 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     public static final int DIALOG_ANSWER_NEW_RELATION = 2;
     public static final int DIALOG_ANSWER_CANCEL = 3;
 
-    public TaggingPresetMenu group = null;
+    public static final String OPTIONAL_TOOLTIP_TEXT = "Optional tooltip text";
+
+    /** Prefix of preset icon loading failure error message */
+    public static final String PRESET_ICON_ERROR_MSG_PREFIX = "Could not get presets icon ";
+
+    public TaggingPresetMenu group;
     public String name;
     public String iconName;
     public String name_context;
     public String locale_name;
     public boolean preset_name_label;
-    public static final String OPTIONAL_TOOLTIP_TEXT = "Optional tooltip text";
 
     /**
      * The types as preparsed collection.
@@ -92,6 +102,11 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     public transient Match nameTemplateFilter;
 
     /**
+     * True whenever the original selection given into createSelection was empty
+     */
+    private boolean originalSelectionEmpty;
+
+    /**
      * Create an empty tagging preset. This will not have any items and
      * will be an empty string as text. createPanel will return null.
      * Use this as default item for "do not select anything".
@@ -115,9 +130,9 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     public String getLocaleName() {
         if (locale_name == null) {
             if (name_context != null) {
-                locale_name = trc(name_context, TaggingPresetItems.fixPresetString(name));
+                locale_name = trc(name_context, TaggingPresetItem.fixPresetString(name));
             } else {
-                locale_name = tr(TaggingPresetItems.fixPresetString(name));
+                locale_name = tr(TaggingPresetItem.fixPresetString(name));
             }
         }
         return locale_name;
@@ -125,16 +140,18 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
 
     /**
      * Returns the translated name of this preset, prefixed with the group names it belongs to.
+     * @return the translated name of this preset, prefixed with the group names it belongs to
      */
     public String getName() {
-        return group != null ? group.getName() + "/" + getLocaleName() : getLocaleName();
+        return group != null ? group.getName() + '/' + getLocaleName() : getLocaleName();
     }
 
     /**
      * Returns the non translated name of this preset, prefixed with the (non translated) group names it belongs to.
+     * @return the non translated name of this preset, prefixed with the (non translated) group names it belongs to
      */
     public String getRawName() {
-        return group != null ? group.getRawName() + "/" + name : name;
+        return group != null ? group.getRawName() + '/' + name : name;
     }
 
     /**
@@ -153,6 +170,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     /**
      * Called from the XML parser to set the icon.
      * The loading task is performed in the background in order to speedup startup.
+     * @param iconName icon name
      */
     public void setIcon(final String iconName) {
         this.iconName = iconName;
@@ -177,7 +195,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
                         }
                     });
                 } else {
-                    Main.warn("Could not get presets icon " + iconName);
+                    Main.warn(TaggingPreset.this + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
                 }
             }
         });
@@ -185,9 +203,10 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
 
     /**
      * Called from the XML parser to set the types this preset affects.
+     * @throws SAXException if any SAX error occurs
      */
     public void setType(String types) throws SAXException {
-        this.types = TaggingPresetItems.getType(types);
+        this.types = TaggingPresetItem.getType(types);
     }
 
     public void setName_template(String pattern) throws SAXException {
@@ -201,7 +220,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
 
     public void setName_template_filter(String filter) throws SAXException {
         try {
-            this.nameTemplateFilter = SearchCompiler.compile(filter, false, false);
+            this.nameTemplateFilter = SearchCompiler.compile(filter);
         } catch (org.openstreetmap.josm.actions.search.SearchCompiler.ParseError e) {
             Main.error("Error while parsing" + filter + ": " + e.getMessage());
             throw new SAXException(e);
@@ -209,7 +228,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     }
 
     private static class PresetPanel extends JPanel {
-        private boolean hasElements = false;
+        private boolean hasElements;
 
         PresetPanel() {
             super(new GridBagLayout());
@@ -232,7 +251,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
             p.add(pp, GBC.eol());
         }
         if (preset_name_label) {
-            TaggingPresetItems.Label.addLabel(p, getIcon(), getName());
+            Label.addLabel(p, getIcon(), getName());
         }
 
         boolean presetInitiallyMatches = !selected.isEmpty() && Utils.forAll(selected, this);
@@ -276,7 +295,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
 
     public boolean isShowable() {
         for (TaggingPresetItem i : data) {
-            if (!(i instanceof TaggingPresetItems.Optional || i instanceof TaggingPresetItems.Space || i instanceof TaggingPresetItems.Key))
+            if (!(i instanceof Optional || i instanceof Space || i instanceof Key))
                 return true;
         }
         return false;
@@ -341,7 +360,7 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     }
 
     private static class PresetDialog extends ExtendedDialog {
-        public PresetDialog(Component content, String title, ImageIcon icon, boolean disableApply, boolean showNewRelation) {
+        PresetDialog(Component content, String title, ImageIcon icon, boolean disableApply, boolean showNewRelation) {
             super(Main.parent, title,
                     showNewRelation ?
                             new String[] {tr("Apply Preset"), tr("New relation"), tr("Cancel")} :
@@ -376,7 +395,20 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
             return DIALOG_ANSWER_CANCEL;
 
         int answer = 1;
-        if (p.getComponentCount() != 0 && (sel.isEmpty() || p.hasElements)) {
+        boolean canCreateRelation = types == null || types.contains(TaggingPresetType.RELATION);
+        if (originalSelectionEmpty && !canCreateRelation) {
+            new Notification(
+                    tr("The preset <i>{0}</i> cannot be applied since nothing has been selected!", getLocaleName()))
+                    .setIcon(JOptionPane.WARNING_MESSAGE)
+                    .show();
+            return DIALOG_ANSWER_CANCEL;
+        } else if (sel.isEmpty() && !canCreateRelation) {
+            new Notification(
+                    tr("The preset <i>{0}</i> cannot be applied since the selection is unsuitable!", getLocaleName()))
+                    .setIcon(JOptionPane.WARNING_MESSAGE)
+                    .show();
+            return DIALOG_ANSWER_CANCEL;
+        } else if (p.getComponentCount() != 0 && (sel.isEmpty() || p.hasElements)) {
             String title = trn("Change {0} object", "Change {0} objects", sel.size(), sel.size());
             if (sel.isEmpty()) {
                 if (originalSelectionEmpty) {
@@ -396,11 +428,6 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     }
 
     /**
-     * True whenever the original selection given into createSelection was empty
-     */
-    private boolean originalSelectionEmpty = false;
-
-    /**
      * Removes all unsuitable OsmPrimitives from the given list
      * @param participants List of possible OsmPrimitives to tag
      * @return Cleaned list with suitable OsmPrimitives only
@@ -427,7 +454,10 @@ public class TaggingPreset extends AbstractAction implements MapView.LayerChange
     public static Command createCommand(Collection<OsmPrimitive> sel, List<Tag> changedTags) {
         List<Command> cmds = new ArrayList<>();
         for (Tag tag: changedTags) {
-            cmds.add(new ChangePropertyCommand(sel, tag.getKey(), tag.getValue()));
+            ChangePropertyCommand cmd = new ChangePropertyCommand(sel, tag.getKey(), tag.getValue());
+            if (cmd.getObjectsNumber() > 0) {
+                cmds.add(cmd);
+            }
         }
 
         if (cmds.isEmpty())
diff --git a/src/org/openstreetmap/josm/gui/tagging/PresetHandler.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
similarity index 75%
rename from src/org/openstreetmap/josm/gui/tagging/PresetHandler.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
index 9483b5b..a53f041 100644
--- a/src/org/openstreetmap/josm/gui/tagging/PresetHandler.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import java.util.Collection;
 import java.util.List;
@@ -7,7 +7,7 @@ import java.util.List;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
 
-public interface PresetHandler {
+public interface TaggingPresetHandler {
     Collection<OsmPrimitive> getSelection();
 
     void updateTags(List<Tag> tags);
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
new file mode 100644
index 0000000..ef3bba8
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
@@ -0,0 +1,134 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.xml.sax.SAXException;
+
+/**
+ * Class that represents single part of a preset - one field or text label that is shown to user
+ * @since 6068
+ */
+public abstract class TaggingPresetItem {
+
+    // cache the parsing of types using a LRU cache (http://java-planet.blogspot.com/2005/08/how-to-set-up-simple-lru-cache-using.html)
+    private static final Map<String, Set<TaggingPresetType>> TYPE_CACHE = new LinkedHashMap<>(16, 1.1f, true);
+
+    protected void initAutoCompletionField(AutoCompletingTextField field, String... key) {
+        initAutoCompletionField(field, Arrays.asList(key));
+    }
+
+    protected void initAutoCompletionField(AutoCompletingTextField field, List<String> keys) {
+        if (Main.main == null) return;
+        OsmDataLayer layer = Main.main.getEditLayer();
+        if (layer == null) {
+            return;
+        }
+        AutoCompletionList list = new AutoCompletionList();
+        layer.data.getAutoCompletionManager().populateWithTagValues(list, keys);
+        field.setAutoCompletionList(list);
+    }
+
+    /**
+     * Called by {@link TaggingPreset#createPanel} during tagging preset panel creation.
+     * All components defining this tagging preset item must be added to given panel.
+     *
+     * @param p The panel where components must be added
+     * @param sel The related selected OSM primitives
+     * @param presetInitiallyMatches Whether this {@link TaggingPreset} already matched before applying,
+     *                               i.e. whether the map feature already existed on the primitive.
+     * @return {@code true} if this item adds semantic tagging elements, {@code false} otherwise.
+     */
+    protected abstract boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches);
+
+    /**
+     * Adds the new tags to apply to selected OSM primitives when the preset holding this item is applied.
+     * @param changedTags The list of changed tags to modify if needed
+     */
+    protected abstract void addCommands(List<Tag> changedTags);
+
+    /**
+     * Tests whether the tags match this item.
+     * Note that for a match, at least one positive and no negative is required.
+     * @param tags the tags of an {@link OsmPrimitive}
+     * @return {@code true} if matches (positive), {@code null} if neutral, {@code false} if mismatches (negative).
+     */
+    protected Boolean matches(Map<String, String> tags) {
+        return null;
+    }
+
+    protected static Set<TaggingPresetType> getType(String types) throws SAXException {
+        if (types == null || types.isEmpty()) {
+            throw new SAXException(tr("Unknown type: {0}", types));
+        }
+        if (TYPE_CACHE.containsKey(types))
+            return TYPE_CACHE.get(types);
+        Set<TaggingPresetType> result = EnumSet.noneOf(TaggingPresetType.class);
+        for (String type : Arrays.asList(types.split(","))) {
+            try {
+                TaggingPresetType presetType = TaggingPresetType.fromString(type);
+                result.add(presetType);
+            } catch (IllegalArgumentException e) {
+                throw new SAXException(tr("Unknown type: {0}", type), e);
+            }
+        }
+        TYPE_CACHE.put(types, result);
+        return result;
+    }
+
+    protected static String fixPresetString(String s) {
+        return s == null ? s : s.replaceAll("'", "''");
+    }
+
+    protected static String getLocaleText(String text, String text_context, String defaultText) {
+        if (text == null) {
+            return defaultText;
+        } else if (text_context != null) {
+            return trc(text_context, fixPresetString(text));
+        } else {
+            return tr(fixPresetString(text));
+        }
+    }
+
+    protected static Integer parseInteger(String str) {
+        if (str == null || str.isEmpty())
+            return null;
+        try {
+            return Integer.valueOf(str);
+        } catch (Exception e) {
+            if (Main.isTraceEnabled()) {
+                Main.trace(e.getMessage());
+            }
+        }
+        return null;
+    }
+
+    protected static ImageIcon loadImageIcon(String iconName, File zipIcons, Integer maxSize) {
+        final Collection<String> s = Main.pref.getCollection("taggingpreset.icon.sources", null);
+        ImageProvider imgProv = new ImageProvider(iconName).setDirs(s).setId("presets").setArchive(zipIcons).setOptional(true);
+        if (maxSize != null) {
+            imgProv.setMaxSize(maxSize);
+        }
+        return imgProv.get();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/PresetLabel.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
similarity index 92%
rename from src/org/openstreetmap/josm/gui/tagging/PresetLabel.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
index db43bca..e0fadf2 100644
--- a/src/org/openstreetmap/josm/gui/tagging/PresetLabel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetLabel.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import java.awt.Cursor;
 import java.awt.Font;
@@ -10,7 +10,7 @@ import java.util.Collections;
 
 import javax.swing.JLabel;
 
-public class PresetLabel extends JLabel {
+public class TaggingPresetLabel extends JLabel {
 
     protected final TaggingPreset t;
 
@@ -18,7 +18,7 @@ public class PresetLabel extends JLabel {
      * Constructs a new {@code PresetLabel}.
      * @param t the tagging preset
      */
-    public PresetLabel(TaggingPreset t) {
+    public TaggingPresetLabel(TaggingPreset t) {
         super(t.getName() + " …");
         setIcon(t.getIcon());
         addMouseListener(new PresetLabelMouseListener(this));
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetListener.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
similarity index 84%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetListener.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
index ae7bbc0..c0d3005 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetListener.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 /**
  * Notification of tagging presets events.
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
similarity index 96%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
index 3e6b204..70a9dfb 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -24,7 +24,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 
 public class TaggingPresetMenu extends TaggingPreset {
-    public JMenu menu = null; // set by TaggingPresets
+    public JMenu menu; // set by TaggingPresets
 
     private static class PresetTextComparator implements Comparator<JMenuItem>, Serializable {
         @Override
@@ -64,7 +64,7 @@ public class TaggingPresetMenu extends TaggingPreset {
         putValue("toolbar", "tagginggroup_" + getRawName());
     }
 
-    private Component copyMenuComponent(Component menuComponent) {
+    private static Component copyMenuComponent(Component menuComponent) {
         if (menuComponent instanceof JMenu) {
             JMenu menu = (JMenu) menuComponent;
             JMenu result = new JMenu(menu.getAction());
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetNameTemplateList.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
similarity index 98%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetNameTemplateList.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
index bb24baa..af9a10d 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetNameTemplateList.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetNameTemplateList.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -16,6 +16,8 @@ public final class TaggingPresetNameTemplateList implements TaggingPresetListene
 
     private static TaggingPresetNameTemplateList instance;
 
+    private final List<TaggingPreset> presetsWithPattern = new LinkedList<>();
+
     /**
      * Replies the unique instance.
      * @return the unique instance
@@ -28,8 +30,6 @@ public final class TaggingPresetNameTemplateList implements TaggingPresetListene
         return instance;
     }
 
-    private final List<TaggingPreset> presetsWithPattern = new LinkedList<>();
-
     private TaggingPresetNameTemplateList() {
         buildPresetsWithPattern();
     }
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
similarity index 81%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
index 5ab38fd..5b83ff6 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -25,6 +25,21 @@ import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
+import org.openstreetmap.josm.gui.tagging.presets.items.Check;
+import org.openstreetmap.josm.gui.tagging.presets.items.CheckGroup;
+import org.openstreetmap.josm.gui.tagging.presets.items.Combo;
+import org.openstreetmap.josm.gui.tagging.presets.items.ComboMultiSelect;
+import org.openstreetmap.josm.gui.tagging.presets.items.ItemSeparator;
+import org.openstreetmap.josm.gui.tagging.presets.items.Key;
+import org.openstreetmap.josm.gui.tagging.presets.items.Label;
+import org.openstreetmap.josm.gui.tagging.presets.items.Link;
+import org.openstreetmap.josm.gui.tagging.presets.items.MultiSelect;
+import org.openstreetmap.josm.gui.tagging.presets.items.Optional;
+import org.openstreetmap.josm.gui.tagging.presets.items.PresetLink;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
+import org.openstreetmap.josm.gui.tagging.presets.items.Space;
+import org.openstreetmap.josm.gui.tagging.presets.items.Text;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
 import org.openstreetmap.josm.tools.Predicates;
@@ -45,22 +60,10 @@ public final class TaggingPresetReader {
     public static final String PRESET_MIME_TYPES =
             "application/xml, text/xml, text/plain; q=0.8, application/zip, application/octet-stream; q=0.5";
 
-    private TaggingPresetReader() {
-        // Hide default constructor for utils classes
-    }
-
-    private static volatile File zipIcons = null;
+    private static volatile File zipIcons;
     private static volatile boolean loadIcons = true;
 
     /**
-     * Returns the set of preset source URLs.
-     * @return The set of preset source URLs.
-     */
-    public static Set<String> getPresetSources() {
-        return new TaggingPresetPreference.PresetPrefHelper().getActiveUrls();
-    }
-
-    /**
      * Holds a reference to a chunk of items/objects.
      */
     public static class Chunk {
@@ -76,33 +79,8 @@ public final class TaggingPresetReader {
         public String ref;
     }
 
-    private static XmlObjectParser buildParser() {
-        XmlObjectParser parser = new XmlObjectParser();
-        parser.mapOnStart("item", TaggingPreset.class);
-        parser.mapOnStart("separator", TaggingPresetSeparator.class);
-        parser.mapBoth("group", TaggingPresetMenu.class);
-        parser.map("text", TaggingPresetItems.Text.class);
-        parser.map("link", TaggingPresetItems.Link.class);
-        parser.map("preset_link", TaggingPresetItems.PresetLink.class);
-        parser.mapOnStart("optional", TaggingPresetItems.Optional.class);
-        parser.mapOnStart("roles", TaggingPresetItems.Roles.class);
-        parser.map("role", TaggingPresetItems.Role.class);
-        parser.map("checkgroup", TaggingPresetItems.CheckGroup.class);
-        parser.map("check", TaggingPresetItems.Check.class);
-        parser.map("combo", TaggingPresetItems.Combo.class);
-        parser.map("multiselect", TaggingPresetItems.MultiSelect.class);
-        parser.map("label", TaggingPresetItems.Label.class);
-        parser.map("space", TaggingPresetItems.Space.class);
-        parser.map("key", TaggingPresetItems.Key.class);
-        parser.map("list_entry", TaggingPresetItems.PresetListEntry.class);
-        parser.map("item_separator", TaggingPresetItems.ItemSeparator.class);
-        parser.mapBoth("chunk", Chunk.class);
-        parser.map("reference", Reference.class);
-        return parser;
-    }
-
     static class HashSetWithLast<E> extends LinkedHashSet<E> {
-        protected E last = null;
+        protected E last;
 
         @Override
         public boolean add(E e) {
@@ -112,6 +90,7 @@ public final class TaggingPresetReader {
 
         /**
          * Returns the last inserted element.
+         * @return the last inserted element
          */
         public E getLast() {
             return last;
@@ -119,6 +98,39 @@ public final class TaggingPresetReader {
     }
 
     /**
+     * Returns the set of preset source URLs.
+     * @return The set of preset source URLs.
+     */
+    public static Set<String> getPresetSources() {
+        return new TaggingPresetPreference.PresetPrefHelper().getActiveUrls();
+    }
+
+    private static XmlObjectParser buildParser() {
+        XmlObjectParser parser = new XmlObjectParser();
+        parser.mapOnStart("item", TaggingPreset.class);
+        parser.mapOnStart("separator", TaggingPresetSeparator.class);
+        parser.mapBoth("group", TaggingPresetMenu.class);
+        parser.map("text", Text.class);
+        parser.map("link", Link.class);
+        parser.map("preset_link", PresetLink.class);
+        parser.mapOnStart("optional", Optional.class);
+        parser.mapOnStart("roles", Roles.class);
+        parser.map("role", Role.class);
+        parser.map("checkgroup", CheckGroup.class);
+        parser.map("check", Check.class);
+        parser.map("combo", Combo.class);
+        parser.map("multiselect", MultiSelect.class);
+        parser.map("label", Label.class);
+        parser.map("space", Space.class);
+        parser.map("key", Key.class);
+        parser.map("list_entry", ComboMultiSelect.PresetListEntry.class);
+        parser.map("item_separator", ItemSeparator.class);
+        parser.mapBoth("chunk", Chunk.class);
+        parser.map("reference", Reference.class);
+        return parser;
+    }
+
+    /**
      * Reads all tagging presets from the input reader.
      * @param in The input reader
      * @param validate if {@code true}, XML validation will be performed
@@ -144,9 +156,9 @@ public final class TaggingPresetReader {
         TaggingPresetMenu lastmenu = null;
         /** to detect end of reused {@code <group>} */
         TaggingPresetMenu lastmenuOriginal = null;
-        TaggingPresetItems.Roles lastrole = null;
-        final List<TaggingPresetItems.Check> checks = new LinkedList<>();
-        List<TaggingPresetItems.PresetListEntry> listEntries = new LinkedList<>();
+        Roles lastrole = null;
+        final List<Check> checks = new LinkedList<>();
+        List<ComboMultiSelect.PresetListEntry> listEntries = new LinkedList<>();
         final Map<String, List<Object>> byId = new HashMap<>();
         final Deque<String> lastIds = new ArrayDeque<>();
         /** lastIdIterators contains non empty iterators of items to be handled before obtaining the next item from the XML parser */
@@ -237,27 +249,27 @@ public final class TaggingPresetReader {
                 lastrole = null;
             } else {
                 if (!all.isEmpty()) {
-                    if (o instanceof TaggingPresetItems.Roles) {
+                    if (o instanceof Roles) {
                         all.getLast().data.add((TaggingPresetItem) o);
                         if (all.getLast().roles != null) {
                             throw new SAXException(tr("Roles cannot appear more than once"));
                         }
-                        all.getLast().roles = (TaggingPresetItems.Roles) o;
-                        lastrole = (TaggingPresetItems.Roles) o;
-                    } else if (o instanceof TaggingPresetItems.Role) {
+                        all.getLast().roles = (Roles) o;
+                        lastrole = (Roles) o;
+                    } else if (o instanceof Role) {
                         if (lastrole == null)
                             throw new SAXException(tr("Preset role element without parent"));
-                        lastrole.roles.add((TaggingPresetItems.Role) o);
-                    } else if (o instanceof TaggingPresetItems.Check) {
-                        checks.add((TaggingPresetItems.Check) o);
-                    } else if (o instanceof TaggingPresetItems.PresetListEntry) {
-                        listEntries.add((TaggingPresetItems.PresetListEntry) o);
-                    } else if (o instanceof TaggingPresetItems.CheckGroup) {
+                        lastrole.roles.add((Role) o);
+                    } else if (o instanceof Check) {
+                        checks.add((Check) o);
+                    } else if (o instanceof ComboMultiSelect.PresetListEntry) {
+                        listEntries.add((ComboMultiSelect.PresetListEntry) o);
+                    } else if (o instanceof CheckGroup) {
                         all.getLast().data.add((TaggingPresetItem) o);
                         // Make sure list of checks is empty to avoid adding checks several times
                         // when used in chunks (fix #10801)
-                        ((TaggingPresetItems.CheckGroup) o).checks.clear();
-                        ((TaggingPresetItems.CheckGroup) o).checks.addAll(checks);
+                        ((CheckGroup) o).checks.clear();
+                        ((CheckGroup) o).checks.addAll(checks);
                         checks.clear();
                     } else {
                         if (!checks.isEmpty()) {
@@ -265,11 +277,11 @@ public final class TaggingPresetReader {
                             checks.clear();
                         }
                         all.getLast().data.add((TaggingPresetItem) o);
-                        if (o instanceof TaggingPresetItems.ComboMultiSelect) {
-                            ((TaggingPresetItems.ComboMultiSelect) o).addListEntries(listEntries);
-                        } else if (o instanceof TaggingPresetItems.Key) {
-                            if (((TaggingPresetItems.Key) o).value == null) {
-                                ((TaggingPresetItems.Key) o).value = ""; // Fix #8530
+                        if (o instanceof ComboMultiSelect) {
+                            ((ComboMultiSelect) o).addListEntries(listEntries);
+                        } else if (o instanceof Key) {
+                            if (((Key) o).value == null) {
+                                ((Key) o).value = ""; // Fix #8530
                             }
                         }
                         listEntries = new LinkedList<>();
@@ -390,7 +402,8 @@ public final class TaggingPresetReader {
     }
 
     /**
-     * Returns true if icon images should be loaded.
+     * Determines if icon images should be loaded.
+     * @return {@code true} if icon images should be loaded
      */
     public static boolean isLoadIcons() {
         return loadIcons;
@@ -398,8 +411,13 @@ public final class TaggingPresetReader {
 
     /**
      * Sets whether icon images should be loaded.
+     * @param loadIcons {@code true} if icon images should be loaded
      */
     public static void setLoadIcons(boolean loadIcons) {
         TaggingPresetReader.loadIcons = loadIcons;
     }
+
+    private TaggingPresetReader() {
+        // Hide default constructor for utils classes
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
similarity index 95%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
index 940a4de..5481558 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchAction.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchAction.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
similarity index 97%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
index ddfc445..b487990 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -16,10 +16,10 @@ import org.openstreetmap.josm.gui.ExtendedDialog;
  */
 public final class TaggingPresetSearchDialog extends ExtendedDialog {
 
-    private TaggingPresetSelector selector;
-
     private static TaggingPresetSearchDialog instance;
 
+    private TaggingPresetSelector selector;
+
     /**
      * Returns the unique instance of {@code TaggingPresetSearchDialog}.
      * @return the unique instance of {@code TaggingPresetSearchDialog}.
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
similarity index 96%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchPrimitiveDialog.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
index 992e0d9..4329281 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -18,13 +18,37 @@ import org.openstreetmap.josm.tools.Utils;
 
 /**
  * A dialog that allows to select a preset and then selects all matching OSM objects.
- * @see org.openstreetmap.josm.gui.tagging.TaggingPresetSearchDialog
+ * @see org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSearchDialog
  */
 public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
 
+    private static TaggingPresetSearchPrimitiveDialog instance;
+
     private TaggingPresetSelector selector;
 
-    private static TaggingPresetSearchPrimitiveDialog instance;
+    /**
+     * An action executing {@link TaggingPresetSearchPrimitiveDialog}.
+     */
+    public static class Action extends JosmAction {
+
+        /**
+         * Constructs a new {@link TaggingPresetSearchPrimitiveDialog.Action}.
+         */
+        public Action() {
+            super(tr("Search for objects by preset"), "dialogs/search", tr("Show preset search dialog"),
+                    Shortcut.registerShortcut("preset:search-objects", tr("Search for objects by preset"), KeyEvent.VK_F3, Shortcut.SHIFT),
+                    false);
+            putValue("toolbar", "presets/search-objects");
+            Main.toolbar.register(this);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            if (Main.main.hasEditLayer()) {
+                TaggingPresetSearchPrimitiveDialog.getInstance().showDialog();
+            }
+        }
+    }
 
     /**
      * Returns the unique instance of {@code TaggingPresetSearchPrimitiveDialog}.
@@ -68,29 +92,4 @@ public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
             }
         }
     }
-
-    /**
-     * An action executing {@link TaggingPresetSearchPrimitiveDialog}.
-     */
-    public static class Action extends JosmAction {
-
-        /**
-         * Constructs a new {@link TaggingPresetSearchPrimitiveDialog.Action}.
-         */
-        public Action() {
-            super(tr("Search for objects by preset"), "dialogs/search", tr("Show preset search dialog"),
-                    Shortcut.registerShortcut("preset:search-objects", tr("Search for objects by preset"), KeyEvent.VK_F3, Shortcut.SHIFT),
-                    false);
-            putValue("toolbar", "presets/search-objects");
-            Main.toolbar.register(this);
-        }
-
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            if (Main.main.hasEditLayer()) {
-                TaggingPresetSearchPrimitiveDialog.getInstance().showDialog();
-            }
-        }
-    }
-
 }
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
similarity index 96%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
index b08f683..2c5162c 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -48,10 +48,11 @@ import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Key;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.KeyedItem;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Role;
-import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.ComboMultiSelect;
+import org.openstreetmap.josm.gui.tagging.presets.items.Key;
+import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
+import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.Predicate;
@@ -124,7 +125,7 @@ public class TaggingPresetSelector extends JPanel implements SelectionChangedLis
     /**
      * Computes the match ration of a {@link TaggingPreset} wrt. a searchString.
      */
-    static class PresetClassification implements Comparable<PresetClassification> {
+    public static class PresetClassification implements Comparable<PresetClassification> {
         public final TaggingPreset preset;
         public int classification;
         public int favoriteIndex;
@@ -143,8 +144,8 @@ public class TaggingPresetSelector extends JPanel implements SelectionChangedLis
             for (TaggingPresetItem item: preset.data) {
                 if (item instanceof KeyedItem) {
                     tags.add(((KeyedItem) item).key);
-                    if (item instanceof TaggingPresetItems.ComboMultiSelect) {
-                        final TaggingPresetItems.ComboMultiSelect cms = (TaggingPresetItems.ComboMultiSelect) item;
+                    if (item instanceof ComboMultiSelect) {
+                        final ComboMultiSelect cms = (ComboMultiSelect) item;
                         if (Boolean.parseBoolean(cms.values_searchable)) {
                             tags.addAll(cms.getDisplayValues());
                         }
@@ -160,7 +161,7 @@ public class TaggingPresetSelector extends JPanel implements SelectionChangedLis
             }
         }
 
-        private int isMatching(Collection<String> values, String[] searchString) {
+        private static int isMatching(Collection<String> values, String[] searchString) {
             int sum = 0;
             for (String word: searchString) {
                 boolean found = false;
@@ -365,7 +366,7 @@ public class TaggingPresetSelector extends JPanel implements SelectionChangedLis
     /**
      * A collection of {@link PresetClassification}s with the functionality of filtering wrt. searchString.
      */
-    static class PresetClassifications implements Iterable<PresetClassification> {
+    public static class PresetClassifications implements Iterable<PresetClassification> {
 
         private final List<PresetClassification> classifications = new ArrayList<>();
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSeparator.java
similarity index 83%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSeparator.java
index 5536af8..68f6d6b 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSeparator.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 /**
  * Class used to represent a {@link javax.swing.JSeparator} inside tagging preset menu.
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetType.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetType.java
similarity index 97%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresetType.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetType.java
index e4bace6..d19ea20 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetType.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetType.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresets.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
similarity index 98%
rename from src/org/openstreetmap/josm/gui/tagging/TaggingPresets.java
rename to src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
index bb1562f..f46eb5b 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TaggingPresets.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java
new file mode 100644
index 0000000..a1a40a4
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java
@@ -0,0 +1,122 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.widgets.QuadStateCheckBox;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Checkbox type.
+ */
+public class Check extends KeyedItem {
+
+    /** The localized version of {@link #text}. */
+    public String locale_text;
+    /** the value to set when checked (default is "yes") */
+    public String value_on = OsmUtils.trueval;
+    /** the value to set when unchecked (default is "no") */
+    public String value_off = OsmUtils.falseval;
+    /** whether the off value is disabled in the dialog, i.e., only unset or yes are provided */
+    public boolean disable_off;
+    /** "on" or "off" or unset (default is unset) */
+    public String default_; // only used for tagless objects
+
+    private QuadStateCheckBox check;
+    private QuadStateCheckBox.State initialState;
+    private Boolean def;
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+
+        // find out if our key is already used in the selection.
+        final Usage usage = determineBooleanUsage(sel, key);
+        final String oneValue = usage.values.isEmpty() ? null : usage.values.last();
+        def = "on".equals(default_) ? Boolean.TRUE : "off".equals(default_) ? Boolean.FALSE : null;
+
+        if (locale_text == null) {
+            locale_text = getLocaleText(text, text_context, null);
+        }
+
+        if (usage.values.size() < 2 && (oneValue == null || value_on.equals(oneValue) || value_off.equals(oneValue))) {
+            if (def != null && !PROP_FILL_DEFAULT.get()) {
+                // default is set and filling default values feature is disabled - check if all primitives are untagged
+                for (OsmPrimitive s : sel) {
+                    if (s.hasKeys()) {
+                        def = null;
+                    }
+                }
+            }
+
+            // all selected objects share the same value which is either true or false or unset,
+            // we can display a standard check box.
+            initialState = value_on.equals(oneValue) || Boolean.TRUE.equals(def)
+                    ? QuadStateCheckBox.State.SELECTED
+                    : value_off.equals(oneValue) || Boolean.FALSE.equals(def)
+                    ? QuadStateCheckBox.State.NOT_SELECTED
+                    : QuadStateCheckBox.State.UNSET;
+
+        } else {
+            def = null;
+            // the objects have different values, or one or more objects have something
+            // else than true/false. we display a quad-state check box
+            // in "partial" state.
+            initialState = QuadStateCheckBox.State.PARTIAL;
+        }
+
+        final List<QuadStateCheckBox.State> allowedStates = new ArrayList<>(4);
+        if (QuadStateCheckBox.State.PARTIAL.equals(initialState))
+            allowedStates.add(QuadStateCheckBox.State.PARTIAL);
+        allowedStates.add(QuadStateCheckBox.State.SELECTED);
+        if (!disable_off || value_off.equals(oneValue))
+            allowedStates.add(QuadStateCheckBox.State.NOT_SELECTED);
+        allowedStates.add(QuadStateCheckBox.State.UNSET);
+        check = new QuadStateCheckBox(locale_text, initialState,
+                allowedStates.toArray(new QuadStateCheckBox.State[allowedStates.size()]));
+
+        p.add(check, GBC.eol().fill(GBC.HORIZONTAL));
+        return true;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+        // if the user hasn't changed anything, don't create a command.
+        if (check.getState() == initialState && def == null) return;
+
+        // otherwise change things according to the selected value.
+        changedTags.add(new Tag(key,
+                check.getState() == QuadStateCheckBox.State.SELECTED ? value_on :
+                    check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? value_off :
+                        null));
+    }
+
+    @Override
+    public MatchType getDefaultMatch() {
+        return MatchType.NONE;
+    }
+
+    @Override
+    public Collection<String> getValues() {
+        return disable_off ? Arrays.asList(value_on) : Arrays.asList(value_on, value_off);
+    }
+
+    @Override
+    public String toString() {
+        return "Check ["
+                + (locale_text != null ? "locale_text=" + locale_text + ", " : "")
+                + (value_on != null ? "value_on=" + value_on + ", " : "")
+                + (value_off != null ? "value_off=" + value_off + ", " : "")
+                + "default_=" + default_ + ", "
+                + (check != null ? "check=" + check + ", " : "")
+                + (initialState != null ? "initialState=" + initialState
+                        + ", " : "") + "def=" + def + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroup.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroup.java
new file mode 100644
index 0000000..f002cd4
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/CheckGroup.java
@@ -0,0 +1,68 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.awt.GridLayout;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * A group of {@link Check}s.
+ * @since 6114
+ */
+public class CheckGroup extends TaggingPresetItem {
+
+    /**
+     * Number of columns (positive integer)
+     */
+    public String columns;
+
+    /**
+     * List of checkboxes
+     */
+    public final List<Check> checks = new LinkedList<>();
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        Integer cols = Integer.valueOf(columns);
+        int rows = (int) Math.ceil(checks.size()/cols.doubleValue());
+        JPanel panel = new JPanel(new GridLayout(rows, cols));
+
+        for (Check check : checks) {
+            check.addToPanel(panel, sel, presetInitiallyMatches);
+        }
+
+        p.add(panel, GBC.eol());
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+        for (Check check : checks) {
+            check.addCommands(changedTags);
+        }
+    }
+
+    @Override
+    protected Boolean matches(Map<String, String> tags) {
+        for (Check check : checks) {
+            if (Boolean.TRUE.equals(check.matches(tags))) {
+                return Boolean.TRUE;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toString() {
+        return "CheckGroup [columns=" + columns + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
new file mode 100644
index 0000000..d922dbd
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
@@ -0,0 +1,104 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPriority;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.gui.widgets.JosmComboBox;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Combobox type.
+ */
+public class Combo extends ComboMultiSelect {
+
+    public boolean editable = true;
+    protected JosmComboBox<PresetListEntry> combo;
+    public String length;
+
+    /**
+     * Constructs a new {@code Combo}.
+     */
+    public Combo() {
+        delimiter = ",";
+    }
+
+    @Override
+    protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
+        if (!usage.unused()) {
+            for (String s : usage.values) {
+                if (!lhm.containsKey(s)) {
+                    lhm.put(s, new PresetListEntry(s));
+                }
+            }
+        }
+        if (def != null && !lhm.containsKey(def)) {
+            lhm.put(def, new PresetListEntry(def));
+        }
+        lhm.put("", new PresetListEntry(""));
+
+        combo = new JosmComboBox<>(lhm.values().toArray(new PresetListEntry[0]));
+        component = combo;
+        combo.setRenderer(getListCellRenderer());
+        combo.setEditable(editable);
+        combo.reinitialize(lhm.values());
+        AutoCompletingTextField tf = new AutoCompletingTextField();
+        initAutoCompletionField(tf, key);
+        if (Main.pref.getBoolean("taggingpreset.display-keys-as-hint", true)) {
+            tf.setHint(key);
+        }
+        if (length != null && !length.isEmpty()) {
+            tf.setMaxChars(Integer.valueOf(length));
+        }
+        AutoCompletionList acList = tf.getAutoCompletionList();
+        if (acList != null) {
+            acList.add(getDisplayValues(), AutoCompletionItemPriority.IS_IN_STANDARD);
+        }
+        combo.setEditor(tf);
+
+        if (usage.hasUniqueValue()) {
+            // all items have the same value (and there were no unset items)
+            originalValue = lhm.get(usage.getFirst());
+            combo.setSelectedItem(originalValue);
+        } else if (def != null && usage.unused()) {
+            // default is set and all items were unset
+            if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
+                // selected osm primitives are untagged or filling default feature is enabled
+                combo.setSelectedItem(lhm.get(def).getDisplayValue(true));
+            } else {
+                // selected osm primitives are tagged and filling default feature is disabled
+                combo.setSelectedItem("");
+            }
+            originalValue = lhm.get(DIFFERENT);
+        } else if (usage.unused()) {
+            // all items were unset (and so is default)
+            originalValue = lhm.get("");
+            if ("force".equals(use_last_as_default) && LAST_VALUES.containsKey(key) && !presetInitiallyMatches) {
+                combo.setSelectedItem(lhm.get(LAST_VALUES.get(key)));
+            } else {
+                combo.setSelectedItem(originalValue);
+            }
+        } else {
+            originalValue = lhm.get(DIFFERENT);
+            combo.setSelectedItem(originalValue);
+        }
+        p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
+    }
+
+    @Override
+    protected Object getSelectedItem() {
+        return combo.getSelectedItem();
+
+    }
+
+    @Override
+    protected String getDisplayIfNull() {
+        if (combo.isEditable())
+            return combo.getEditor().getItem().toString();
+        else
+            return null;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
new file mode 100644
index 0000000..9220972
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
@@ -0,0 +1,498 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.io.File;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListModel;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetSelector;
+import org.openstreetmap.josm.tools.AlphanumComparator;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * Abstract superclass for combo box and multi-select list types.
+ */
+public abstract class ComboMultiSelect extends KeyedItem {
+
+    private static final ListCellRenderer<PresetListEntry> RENDERER = new ListCellRenderer<PresetListEntry>() {
+
+        private final JLabel lbl = new JLabel();
+
+        @Override
+        public Component getListCellRendererComponent(JList<? extends PresetListEntry> list, PresetListEntry item, int index,
+                boolean isSelected, boolean cellHasFocus) {
+
+            // Only return cached size, item is not shown
+            if (!list.isShowing() && item.prefferedWidth != -1 && item.prefferedHeight != -1) {
+                if (index == -1) {
+                    lbl.setPreferredSize(new Dimension(item.prefferedWidth, 10));
+                } else {
+                    lbl.setPreferredSize(new Dimension(item.prefferedWidth, item.prefferedHeight));
+                }
+                return lbl;
+            }
+
+            lbl.setPreferredSize(null);
+
+            if (isSelected) {
+                lbl.setBackground(list.getSelectionBackground());
+                lbl.setForeground(list.getSelectionForeground());
+            } else {
+                lbl.setBackground(list.getBackground());
+                lbl.setForeground(list.getForeground());
+            }
+
+            lbl.setOpaque(true);
+            lbl.setFont(lbl.getFont().deriveFont(Font.PLAIN));
+            lbl.setText("<html>" + item.getListDisplay() + "</html>");
+            lbl.setIcon(item.getIcon());
+            lbl.setEnabled(list.isEnabled());
+
+            // Cache size
+            item.prefferedWidth = lbl.getPreferredSize().width;
+            item.prefferedHeight = lbl.getPreferredSize().height;
+
+            // We do not want the editor to have the maximum height of all
+            // entries. Return a dummy with bogus height.
+            if (index == -1) {
+                lbl.setPreferredSize(new Dimension(lbl.getPreferredSize().width, 10));
+            }
+            return lbl;
+        }
+    };
+
+    /** The localized version of {@link #text}. */
+    public String locale_text;
+    public String values;
+    public String values_from;
+    /** The context used for translating {@link #values} */
+    public String values_context;
+    /** Disabled internationalisation for value to avoid mistakes, see #11696 */
+    public boolean values_no_i18n;
+    /** Whether to sort the values, defaults to true. */
+    public boolean values_sort = true;
+    public String display_values;
+    /** The localized version of {@link #display_values}. */
+    public String locale_display_values;
+    public String short_descriptions;
+    /** The localized version of {@link #short_descriptions}. */
+    public String locale_short_descriptions;
+    public String default_;
+    public String delimiter = ";";
+    public String use_last_as_default = "false";
+    /** whether to use values for search via {@link TaggingPresetSelector} */
+    public String values_searchable = "false";
+
+    protected JComponent component;
+    protected final Map<String, PresetListEntry> lhm = new LinkedHashMap<>();
+    private boolean initialized;
+    protected Usage usage;
+    protected Object originalValue;
+
+    /**
+     * Class that allows list values to be assigned and retrieved as a comma-delimited
+     * string (extracted from TaggingPreset)
+     */
+    protected static class ConcatenatingJList extends JList<PresetListEntry> {
+        private final String delimiter;
+
+        protected ConcatenatingJList(String del, PresetListEntry[] o) {
+            super(o);
+            delimiter = del;
+        }
+
+        public void setSelectedItem(Object o) {
+            if (o == null) {
+                clearSelection();
+            } else {
+                String s = o.toString();
+                Set<String> parts = new TreeSet<>(Arrays.asList(s.split(delimiter)));
+                ListModel<PresetListEntry> lm = getModel();
+                int[] intParts = new int[lm.getSize()];
+                int j = 0;
+                for (int i = 0; i < lm.getSize(); i++) {
+                    final String value = lm.getElementAt(i).value;
+                    if (parts.contains(value)) {
+                        intParts[j++] = i;
+                        parts.remove(value);
+                    }
+                }
+                setSelectedIndices(Arrays.copyOf(intParts, j));
+                // check if we have actually managed to represent the full
+                // value with our presets. if not, cop out; we will not offer
+                // a selection list that threatens to ruin the value.
+                setEnabled(parts.isEmpty());
+            }
+        }
+
+        public String getSelectedItem() {
+            ListModel<PresetListEntry> lm = getModel();
+            int[] si = getSelectedIndices();
+            StringBuilder builder = new StringBuilder();
+            for (int i = 0; i < si.length; i++) {
+                if (i > 0) {
+                    builder.append(delimiter);
+                }
+                builder.append(lm.getElementAt(si[i]).value);
+            }
+            return builder.toString();
+        }
+    }
+
+    public static class PresetListEntry implements Comparable<PresetListEntry> {
+        public String value;
+        /** The context used for translating {@link #value} */
+        public String value_context;
+        public String display_value;
+        public String short_description;
+        /** The location of icon file to display */
+        public String icon;
+        /** The size of displayed icon. If not set, default is size from icon file */
+        public String icon_size;
+        /** The localized version of {@link #display_value}. */
+        public String locale_display_value;
+        /** The localized version of {@link #short_description}. */
+        public String locale_short_description;
+        private final File zipIcons = TaggingPresetReader.getZipIcons();
+
+        // Cached size (currently only for Combo) to speed up preset dialog initialization
+        public int prefferedWidth = -1;
+        public int prefferedHeight = -1;
+
+        /**
+         * Constructs a new {@code PresetListEntry}, uninitialized.
+         */
+        public PresetListEntry() {
+        }
+
+        public PresetListEntry(String value) {
+            this.value = value;
+        }
+
+        public String getListDisplay() {
+            if (value.equals(DIFFERENT))
+                return "<b>"+DIFFERENT.replaceAll("<", "<").replaceAll(">", ">")+"</b>";
+
+            if (value.isEmpty())
+                return " ";
+
+            final StringBuilder res = new StringBuilder("<b>");
+            res.append(getDisplayValue(true).replaceAll("<", "<").replaceAll(">", ">"))
+               .append("</b>");
+            if (getShortDescription(true) != null) {
+                // wrap in table to restrict the text width
+                res.append("<div style=\"width:300px; padding:0 0 5px 5px\">")
+                   .append(getShortDescription(true))
+                   .append("</div>");
+            }
+            return res.toString();
+        }
+
+        /**
+         * Returns the entry icon, if any.
+         * @return the entry icon, or {@code null}
+         */
+        public ImageIcon getIcon() {
+            return icon == null ? null : loadImageIcon(icon, zipIcons, parseInteger(icon_size));
+        }
+
+        public String getDisplayValue(boolean translated) {
+            return translated
+                    ? Utils.firstNonNull(locale_display_value, tr(display_value), trc(value_context, value))
+                            : Utils.firstNonNull(display_value, value);
+        }
+
+        public String getShortDescription(boolean translated) {
+            return translated
+                    ? Utils.firstNonNull(locale_short_description, tr(short_description))
+                            : short_description;
+        }
+
+        // toString is mainly used to initialize the Editor
+        @Override
+        public String toString() {
+            if (value.equals(DIFFERENT))
+                return DIFFERENT;
+            return getDisplayValue(true).replaceAll("<.*>", ""); // remove additional markup, e.g. <br>
+        }
+
+        @Override
+        public int compareTo(PresetListEntry o) {
+            return AlphanumComparator.getInstance().compare(this.getDisplayValue(true), o.getDisplayValue(true));
+        }
+    }
+
+    /**
+     * allow escaped comma in comma separated list:
+     * "A\, B\, C,one\, two" --> ["A, B, C", "one, two"]
+     * @param delimiter the delimiter, e.g. a comma. separates the entries and
+     *      must be escaped within one entry
+     * @param s the string
+     */
+    public static String[] splitEscaped(char delimiter, String s) {
+        if (s == null)
+            return new String[0];
+        List<String> result = new ArrayList<>();
+        boolean backslash = false;
+        StringBuilder item = new StringBuilder();
+        for (int i = 0; i < s.length(); i++) {
+            char ch = s.charAt(i);
+            if (backslash) {
+                item.append(ch);
+                backslash = false;
+            } else if (ch == '\\') {
+                backslash = true;
+            } else if (ch == delimiter) {
+                result.add(item.toString());
+                item.setLength(0);
+            } else {
+                item.append(ch);
+            }
+        }
+        if (item.length() > 0) {
+            result.add(item.toString());
+        }
+        return result.toArray(new String[result.size()]);
+    }
+
+    protected abstract Object getSelectedItem();
+
+    protected abstract void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches);
+
+    protected char getDelChar() {
+        return delimiter.isEmpty() ? ';' : delimiter.charAt(0);
+    }
+
+    @Override
+    public Collection<String> getValues() {
+        initListEntries();
+        return lhm.keySet();
+    }
+
+    public Collection<String> getDisplayValues() {
+        initListEntries();
+        return Utils.transform(lhm.values(), new Utils.Function<PresetListEntry, String>() {
+            @Override
+            public String apply(PresetListEntry x) {
+                return x.getDisplayValue(true);
+            }
+        });
+    }
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+
+        initListEntries();
+
+        // find out if our key is already used in the selection.
+        usage = determineTextUsage(sel, key);
+        if (!usage.hasUniqueValue() && !usage.unused()) {
+            lhm.put(DIFFERENT, new PresetListEntry(DIFFERENT));
+        }
+
+        p.add(new JLabel(tr("{0}:", locale_text)), GBC.std().insets(0, 0, 10, 0));
+        addToPanelAnchor(p, default_, presetInitiallyMatches);
+
+        return true;
+
+    }
+
+    private void initListEntries() {
+        if (initialized) {
+            lhm.remove(DIFFERENT); // possibly added in #addToPanel
+            return;
+        } else if (lhm.isEmpty()) {
+            initListEntriesFromAttributes();
+        } else {
+            if (values != null) {
+                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                        + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
+                        key, text, "values", "list_entry"));
+            }
+            if (display_values != null || locale_display_values != null) {
+                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                        + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
+                        key, text, "display_values", "list_entry"));
+            }
+            if (short_descriptions != null || locale_short_descriptions != null) {
+                Main.warn(tr("Warning in tagging preset \"{0}-{1}\": "
+                        + "Ignoring ''{2}'' attribute as ''{3}'' elements are given.",
+                        key, text, "short_descriptions", "list_entry"));
+            }
+            for (PresetListEntry e : lhm.values()) {
+                if (e.value_context == null) {
+                    e.value_context = values_context;
+                }
+            }
+        }
+        if (locale_text == null) {
+            locale_text = getLocaleText(text, text_context, null);
+        }
+        initialized = true;
+    }
+
+    private void initListEntriesFromAttributes() {
+        char delChar = getDelChar();
+
+        String[] value_array = null;
+
+        if (values_from != null) {
+            String[] class_method = values_from.split("#");
+            if (class_method != null && class_method.length == 2) {
+                try {
+                    Method method = Class.forName(class_method[0]).getMethod(class_method[1]);
+                    // Check method is public static String[] methodName()
+                    int mod = method.getModifiers();
+                    if (Modifier.isPublic(mod) && Modifier.isStatic(mod)
+                            && method.getReturnType().equals(String[].class) && method.getParameterTypes().length == 0) {
+                        value_array = (String[]) method.invoke(null);
+                    } else {
+                        Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' is not \"{2}\"", key, text,
+                                "public static String[] methodName()"));
+                    }
+                } catch (Exception e) {
+                    Main.error(tr("Broken tagging preset \"{0}-{1}\" - Java method given in ''values_from'' threw {2} ({3})", key, text,
+                            e.getClass().getName(), e.getMessage()));
+                }
+            }
+        }
+
+        if (value_array == null) {
+            value_array = splitEscaped(delChar, values);
+        }
+
+        String[] display_array = value_array;
+        if (!values_no_i18n) {
+            final String displ = Utils.firstNonNull(locale_display_values, display_values);
+            display_array = displ == null ? value_array : splitEscaped(delChar, displ);
+        }
+
+        final String descr = Utils.firstNonNull(locale_short_descriptions, short_descriptions);
+        String[] short_descriptions_array = descr == null ? null : splitEscaped(delChar, descr);
+
+        if (display_array.length != value_array.length) {
+            Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''",
+                            key, text));
+            display_array = value_array;
+        }
+
+        if (short_descriptions_array != null && short_descriptions_array.length != value_array.length) {
+            Main.error(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''",
+                            key, text));
+            short_descriptions_array = null;
+        }
+
+        final List<PresetListEntry> entries = new ArrayList<>(value_array.length);
+        for (int i = 0; i < value_array.length; i++) {
+            final PresetListEntry e = new PresetListEntry(value_array[i]);
+            e.locale_display_value = locale_display_values != null || values_no_i18n
+                    ? display_array[i]
+                    : trc(values_context, fixPresetString(display_array[i]));
+            if (short_descriptions_array != null) {
+                e.locale_short_description = locale_short_descriptions != null
+                        ? short_descriptions_array[i]
+                        : tr(fixPresetString(short_descriptions_array[i]));
+            }
+
+            entries.add(e);
+        }
+
+        if (Main.pref.getBoolean("taggingpreset.sortvalues", true) && values_sort) {
+            Collections.sort(entries);
+        }
+
+        for (PresetListEntry i : entries) {
+            lhm.put(i.value, i);
+        }
+    }
+
+    protected String getDisplayIfNull() {
+        return null;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+        Object obj = getSelectedItem();
+        String display = (obj == null) ? null : obj.toString();
+        String value = null;
+        if (display == null) {
+            display = getDisplayIfNull();
+        }
+
+        if (display != null) {
+            for (Entry<String, PresetListEntry> entry : lhm.entrySet()) {
+                String k = entry.getValue().toString();
+                if (k != null && k.equals(display)) {
+                    value = entry.getKey();
+                    break;
+                }
+            }
+            if (value == null) {
+                value = display;
+            }
+        } else {
+            value = "";
+        }
+        value = Tag.removeWhiteSpaces(value);
+
+        // no change if same as before
+        if (originalValue == null) {
+            if (value.isEmpty())
+                return;
+        } else if (value.equals(originalValue.toString()))
+            return;
+
+        if (!"false".equals(use_last_as_default)) {
+            LAST_VALUES.put(key, value);
+        }
+        changedTags.add(new Tag(key, value));
+    }
+
+    public void addListEntry(PresetListEntry e) {
+        lhm.put(e.value, e);
+    }
+
+    public void addListEntries(Collection<PresetListEntry> e) {
+        for (PresetListEntry i : e) {
+            addListEntry(i);
+        }
+    }
+
+    protected ListCellRenderer<PresetListEntry> getListCellRenderer() {
+        return RENDERER;
+    }
+
+    @Override
+    public MatchType getDefaultMatch() {
+        return MatchType.NONE;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparator.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparator.java
new file mode 100644
index 0000000..3187c50
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/ItemSeparator.java
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JPanel;
+import javax.swing.JSeparator;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Class used to represent a {@link JSeparator} inside tagging preset window.
+ * @since 6198
+ */
+public class ItemSeparator extends TaggingPresetItem {
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        p.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL).insets(0, 5, 0, 5));
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+    }
+
+    @Override
+    public String toString() {
+        return "ItemSeparator";
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Key.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Key.java
new file mode 100644
index 0000000..587595e
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Key.java
@@ -0,0 +1,47 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+
+/**
+ * Invisible type allowing to hardcode an OSM key/value from the preset definition.
+ */
+public class Key extends KeyedItem {
+
+    /** The hardcoded value for key */
+    public String value;
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+        changedTags.add(new Tag(key, value));
+    }
+
+    @Override
+    public MatchType getDefaultMatch() {
+        return MatchType.KEY_VALUE_REQUIRED;
+    }
+
+    @Override
+    public Collection<String> getValues() {
+        return Collections.singleton(value);
+    }
+
+    @Override
+    public String toString() {
+        return "Key [key=" + key + ", value=" + value + ", text=" + text
+                + ", text_context=" + text_context + ", match=" + match
+                + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
new file mode 100644
index 0000000..2e51f70
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
@@ -0,0 +1,162 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+
+/**
+ * Preset item associated to an OSM key.
+ */
+public abstract class KeyedItem extends TaggingPresetItem {
+
+    /** Translatation of "<different>". Use in combo boxes to display an entry matching several different values. */
+    protected static final String DIFFERENT = tr("<different>");
+
+    protected static final BooleanProperty PROP_FILL_DEFAULT = new BooleanProperty("taggingpreset.fill-default-for-tagged-primitives", false);
+
+    /** Last value of each key used in presets, used for prefilling corresponding fields */
+    protected static final Map<String, String> LAST_VALUES = new HashMap<>();
+
+    public String key;
+    /** The text to display */
+    public String text;
+    /** The context used for translating {@link #text} */
+    public String text_context;
+    public String match = getDefaultMatch().getValue();
+
+    /**
+     * Enum denoting how a match (see {@link TaggingPresetItem#matches}) is performed.
+     */
+    protected enum MatchType {
+
+        /** Neutral, i.e., do not consider this item for matching. */
+        NONE("none"),
+        /** Positive if key matches, neutral otherwise. */
+        KEY("key"),
+        /** Positive if key matches, negative otherwise. */
+        KEY_REQUIRED("key!"),
+        /** Positive if key and value matches, neutral otherwise. */
+        KEY_VALUE("keyvalue"),
+        /** Positive if key and value matches, negative otherwise. */
+        KEY_VALUE_REQUIRED("keyvalue!");
+
+        private final String value;
+
+        MatchType(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Replies the associated textual value.
+         * @return the associated textual value
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Determines the {@code MatchType} for the given textual value.
+         * @param type the textual value
+         * @return the {@code MatchType} for the given textual value
+         */
+        public static MatchType ofString(String type) {
+            for (MatchType i : EnumSet.allOf(MatchType.class)) {
+                if (i.getValue().equals(type))
+                    return i;
+            }
+            throw new IllegalArgumentException(type + " is not allowed");
+        }
+    }
+
+    protected static class Usage {
+        public SortedSet<String> values;
+        private boolean hadKeys;
+        private boolean hadEmpty;
+
+        public boolean hasUniqueValue() {
+            return values.size() == 1 && !hadEmpty;
+        }
+
+        public boolean unused() {
+            return values.isEmpty();
+        }
+
+        public String getFirst() {
+            return values.first();
+        }
+
+        public boolean hadKeys() {
+            return hadKeys;
+        }
+    }
+
+    protected static Usage determineTextUsage(Collection<OsmPrimitive> sel, String key) {
+        Usage returnValue = new Usage();
+        returnValue.values = new TreeSet<>();
+        for (OsmPrimitive s : sel) {
+            String v = s.get(key);
+            if (v != null) {
+                returnValue.values.add(v);
+            } else {
+                returnValue.hadEmpty = true;
+            }
+            if (s.hasKeys()) {
+                returnValue.hadKeys = true;
+            }
+        }
+        return returnValue;
+    }
+
+    protected static Usage determineBooleanUsage(Collection<OsmPrimitive> sel, String key) {
+
+        Usage returnValue = new Usage();
+        returnValue.values = new TreeSet<>();
+        for (OsmPrimitive s : sel) {
+            String booleanValue = OsmUtils.getNamedOsmBoolean(s.get(key));
+            if (booleanValue != null) {
+                returnValue.values.add(booleanValue);
+            }
+        }
+        return returnValue;
+    }
+
+    public abstract MatchType getDefaultMatch();
+
+    public abstract Collection<String> getValues();
+
+    @Override
+    protected Boolean matches(Map<String, String> tags) {
+        switch (MatchType.ofString(match)) {
+        case NONE:
+            return null;
+        case KEY:
+            return tags.containsKey(key) ? Boolean.TRUE : null;
+        case KEY_REQUIRED:
+            return tags.containsKey(key);
+        case KEY_VALUE:
+            return tags.containsKey(key) && getValues().contains(tags.get(key)) ? Boolean.TRUE : null;
+        case KEY_VALUE_REQUIRED:
+            return tags.containsKey(key) && getValues().contains(tags.get(key));
+        default:
+            throw new IllegalStateException();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "KeyedItem [key=" + key + ", text=" + text
+                + ", text_context=" + text_context + ", match=" + match
+                + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java
new file mode 100644
index 0000000..4919b41
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java
@@ -0,0 +1,50 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.Collection;
+
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Label type.
+ */
+public class Label extends TextItem {
+
+    /** The location of icon file to display (optional) */
+    public String icon;
+    /** The size of displayed icon. If not set, default is 16px */
+    public String icon_size;
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        initializeLocaleText(null);
+        addLabel(p, getIcon(), locale_text);
+        return true;
+    }
+
+    /**
+     * Adds a new {@code JLabel} to the given panel.
+     * @param p The panel
+     * @param icon the icon (optional, can be null)
+     * @param label The text label
+     */
+    public static void addLabel(JPanel p, Icon icon, String label) {
+        p.add(new JLabel(label, icon, JLabel.LEADING), GBC.eol().fill(GBC.HORIZONTAL));
+    }
+
+    /**
+     * Returns the label icon, if any.
+     * @return the label icon, or {@code null}
+     */
+    public ImageIcon getIcon() {
+        Integer size = parseInteger(icon_size);
+        return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), size != null ? size : 16);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java
new file mode 100644
index 0000000..c8bf325
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Collection;
+
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.widgets.UrlLabel;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Hyperlink type.
+ */
+public class Link extends TextItem {
+
+    /** The link to display. */
+    public String href;
+
+    /** The localized version of {@link #href}. */
+    public String locale_href;
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        initializeLocaleText(tr("More information about this feature"));
+        String url = locale_href;
+        if (url == null) {
+            url = href;
+        }
+        if (url != null) {
+            p.add(new UrlLabel(url, locale_text, 2), GBC.eol().insets(0, 10, 0, 0).fill(GBC.HORIZONTAL));
+        }
+        return false;
+    }
+
+    @Override
+    protected String fieldsToString() {
+        return super.fieldsToString()
+                + (href != null ? "href=" + href + ", " : "")
+                + (locale_href != null ? "locale_href=" + locale_href + ", " : "");
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
new file mode 100644
index 0000000..706f4d2
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
@@ -0,0 +1,69 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.awt.Dimension;
+import java.util.List;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.ListCellRenderer;
+
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Multi-select list type.
+ */
+public class MultiSelect extends ComboMultiSelect {
+
+    /**
+     * Number of rows to display (positive integer, optional).
+     */
+    public String rows;
+    protected ConcatenatingJList list;
+
+    @Override
+    protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) {
+        list = new ConcatenatingJList(delimiter, lhm.values().toArray(new PresetListEntry[0]));
+        component = list;
+        ListCellRenderer<PresetListEntry> renderer = getListCellRenderer();
+        list.setCellRenderer(renderer);
+
+        if (usage.hasUniqueValue() && !usage.unused()) {
+            originalValue = usage.getFirst();
+            list.setSelectedItem(originalValue);
+        } else if (def != null && !usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
+            originalValue = DIFFERENT;
+            list.setSelectedItem(def);
+        } else if (usage.unused()) {
+            originalValue = null;
+            list.setSelectedItem(originalValue);
+        } else {
+            originalValue = DIFFERENT;
+            list.setSelectedItem(originalValue);
+        }
+
+        JScrollPane sp = new JScrollPane(list);
+        // if a number of rows has been specified in the preset,
+        // modify preferred height of scroll pane to match that row count.
+        if (rows != null) {
+            double height = renderer.getListCellRendererComponent(list,
+                    new PresetListEntry("x"), 0, false, false).getPreferredSize().getHeight() * Integer.parseInt(rows);
+            sp.setPreferredSize(new Dimension((int) sp.getPreferredSize().getWidth(), (int) height));
+        }
+        p.add(sp, GBC.eol().fill(GBC.HORIZONTAL));
+    }
+
+    @Override
+    protected Object getSelectedItem() {
+        return list.getSelectedItem();
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+        // Do not create any commands if list has been disabled because of an unknown value (fix #8605)
+        if (list.isEnabled()) {
+            super.addCommands(changedTags);
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Optional.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Optional.java
new file mode 100644
index 0000000..aba7e29
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Optional.java
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.Collection;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.tools.GBC;
+
+public class Optional extends TextItem {
+
+    // TODO: Draw a box around optional stuff
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        initializeLocaleText(tr("Optional Attributes:"));
+        p.add(new JLabel(" "), GBC.eol()); // space
+        p.add(new JLabel(locale_text), GBC.eol());
+        p.add(new JLabel(" "), GBC.eol()); // space
+        return false;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
new file mode 100644
index 0000000..05e4f71
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
@@ -0,0 +1,50 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetLabel;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Predicate;
+import org.openstreetmap.josm.tools.Utils;
+
+public class PresetLink extends TaggingPresetItem {
+
+    public String preset_name = "";
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        final String presetName = preset_name;
+        final TaggingPreset t = Utils.filter(TaggingPresets.getTaggingPresets(), new Predicate<TaggingPreset>() {
+            @Override
+            public boolean evaluate(TaggingPreset object) {
+                return presetName.equals(object.name);
+            }
+        }).iterator().next();
+        if (t == null) return false;
+        JLabel lbl = new TaggingPresetLabel(t);
+        lbl.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent arg0) {
+                t.actionPerformed(null);
+            }
+        });
+        p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java
new file mode 100644
index 0000000..449f3d7
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Roles.java
@@ -0,0 +1,132 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.actions.search.SearchAction;
+import org.openstreetmap.josm.actions.search.SearchCompiler;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.xml.sax.SAXException;
+
+public class Roles extends TaggingPresetItem {
+
+    public static class Role {
+        public Set<TaggingPresetType> types;
+        public String key;
+        /** The text to display */
+        public String text;
+        /** The context used for translating {@link #text} */
+        public String text_context;
+        /** The localized version of {@link #text}. */
+        public String locale_text;
+        public SearchCompiler.Match memberExpression;
+
+        public boolean required;
+        private long count;
+
+        public void setType(String types) throws SAXException {
+            this.types = getType(types);
+        }
+
+        public void setRequisite(String str) throws SAXException {
+            if ("required".equals(str)) {
+                required = true;
+            } else if (!"optional".equals(str))
+                throw new SAXException(tr("Unknown requisite: {0}", str));
+        }
+
+        public void setMember_expression(String member_expression) throws SAXException {
+            try {
+                final SearchAction.SearchSetting searchSetting = new SearchAction.SearchSetting();
+                searchSetting.text = member_expression;
+                searchSetting.caseSensitive = true;
+                searchSetting.regexSearch = true;
+                this.memberExpression = SearchCompiler.compile(searchSetting);
+            } catch (SearchCompiler.ParseError ex) {
+                throw new SAXException(tr("Illegal member expression: {0}", ex.getMessage()), ex);
+            }
+        }
+
+        public void setCount(String count) {
+            this.count = Long.parseLong(count);
+        }
+
+        /**
+         * Return either argument, the highest possible value or the lowest allowed value
+         */
+        public long getValidCount(long c) {
+            if (count > 0 && !required)
+                return c != 0 ? count : 0;
+            else if (count > 0)
+                return count;
+            else if (!required)
+                return c != 0 ? c : 0;
+            else
+                return c != 0 ? c : 1;
+        }
+
+        public boolean addToPanel(JPanel p) {
+            String cstring;
+            if (count > 0 && !required) {
+                cstring = "0,"+count;
+            } else if (count > 0) {
+                cstring = String.valueOf(count);
+            } else if (!required) {
+                cstring = "0-...";
+            } else {
+                cstring = "1-...";
+            }
+            if (locale_text == null) {
+                locale_text = getLocaleText(text, text_context, null);
+            }
+            p.add(new JLabel(locale_text+':'), GBC.std().insets(0, 0, 10, 0));
+            p.add(new JLabel(key), GBC.std().insets(0, 0, 10, 0));
+            p.add(new JLabel(cstring), types == null ? GBC.eol() : GBC.std().insets(0, 0, 10, 0));
+            if (types != null) {
+                JPanel pp = new JPanel();
+                for (TaggingPresetType t : types) {
+                    pp.add(new JLabel(ImageProvider.get(t.getIconName())));
+                }
+                p.add(pp, GBC.eol());
+            }
+            return true;
+        }
+    }
+
+    public final List<Role> roles = new LinkedList<>();
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        p.add(new JLabel(" "), GBC.eol()); // space
+        if (!roles.isEmpty()) {
+            JPanel proles = new JPanel(new GridBagLayout());
+            proles.add(new JLabel(tr("Available roles")), GBC.std().insets(0, 0, 10, 0));
+            proles.add(new JLabel(tr("role")), GBC.std().insets(0, 0, 10, 0));
+            proles.add(new JLabel(tr("count")), GBC.std().insets(0, 0, 10, 0));
+            proles.add(new JLabel(tr("elements")), GBC.eol());
+            for (Role i : roles) {
+                i.addToPanel(proles);
+            }
+            p.add(proles, GBC.eol());
+        }
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Space.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Space.java
new file mode 100644
index 0000000..d95c99d
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Space.java
@@ -0,0 +1,34 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Horizontal separator type.
+ */
+public class Space extends TaggingPresetItem {
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+        p.add(new JLabel(" "), GBC.eol()); // space
+        return false;
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+    }
+
+    @Override
+    public String toString() {
+        return "Space";
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
new file mode 100644
index 0000000..c9f70e3
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
@@ -0,0 +1,228 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Component;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.AbstractButton;
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JToggleButton;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
+import org.openstreetmap.josm.gui.widgets.JosmComboBox;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.tools.GBC;
+
+/**
+ * Text field type.
+ */
+public class Text extends KeyedItem {
+
+    private static int auto_increment_selected;
+
+    /** The localized version of {@link #text}. */
+    public String locale_text;
+    public String default_;
+    public String originalValue;
+    public String use_last_as_default = "false";
+    public String auto_increment;
+    public String length;
+    public String alternative_autocomplete_keys;
+
+    private JComponent value;
+
+    @Override
+    public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
+
+        // find out if our key is already used in the selection.
+        Usage usage = determineTextUsage(sel, key);
+        AutoCompletingTextField textField = new AutoCompletingTextField();
+        if (alternative_autocomplete_keys != null) {
+            initAutoCompletionField(textField, (key + ',' + alternative_autocomplete_keys).split(","));
+        } else {
+            initAutoCompletionField(textField, key);
+        }
+        if (Main.pref.getBoolean("taggingpreset.display-keys-as-hint", true)) {
+            textField.setHint(key);
+        }
+        if (length != null && !length.isEmpty()) {
+            textField.setMaxChars(Integer.valueOf(length));
+        }
+        if (usage.unused()) {
+            if (auto_increment_selected != 0  && auto_increment != null) {
+                try {
+                    textField.setText(Integer.toString(Integer.parseInt(
+                            LAST_VALUES.get(key)) + auto_increment_selected));
+                } catch (NumberFormatException ex) {
+                    // Ignore - cannot auto-increment if last was non-numeric
+                    if (Main.isTraceEnabled()) {
+                        Main.trace(ex.getMessage());
+                    }
+                }
+            } else if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || "force".equals(use_last_as_default)) {
+                // selected osm primitives are untagged or filling default values feature is enabled
+                if (!"false".equals(use_last_as_default) && LAST_VALUES.containsKey(key) && !presetInitiallyMatches) {
+                    textField.setText(LAST_VALUES.get(key));
+                } else {
+                    textField.setText(default_);
+                }
+            } else {
+                // selected osm primitives are tagged and filling default values feature is disabled
+                textField.setText("");
+            }
+            value = textField;
+            originalValue = null;
+        } else if (usage.hasUniqueValue()) {
+            // all objects use the same value
+            textField.setText(usage.getFirst());
+            value = textField;
+            originalValue = usage.getFirst();
+        } else {
+            // the objects have different values
+            JosmComboBox<String> comboBox = new JosmComboBox<>(usage.values.toArray(new String[0]));
+            comboBox.setEditable(true);
+            comboBox.setEditor(textField);
+            comboBox.getEditor().setItem(DIFFERENT);
+            value = comboBox;
+            originalValue = DIFFERENT;
+        }
+        if (locale_text == null) {
+            locale_text = getLocaleText(text, text_context, null);
+        }
+
+        // if there's an auto_increment setting, then wrap the text field
+        // into a panel, appending a number of buttons.
+        // auto_increment has a format like -2,-1,1,2
+        // the text box being the first component in the panel is relied
+        // on in a rather ugly fashion further down.
+        if (auto_increment != null) {
+            ButtonGroup bg = new ButtonGroup();
+            JPanel pnl = new JPanel(new GridBagLayout());
+            pnl.add(value, GBC.std().fill(GBC.HORIZONTAL));
+
+            // first, one button for each auto_increment value
+            for (final String ai : auto_increment.split(",")) {
+                JToggleButton aibutton = new JToggleButton(ai);
+                aibutton.setToolTipText(tr("Select auto-increment of {0} for this field", ai));
+                aibutton.setMargin(new java.awt.Insets(0, 0, 0, 0));
+                aibutton.setFocusable(false);
+                saveHorizontalSpace(aibutton);
+                bg.add(aibutton);
+                try {
+                    // TODO there must be a better way to parse a number like "+3" than this.
+                    final int buttonvalue = (NumberFormat.getIntegerInstance().parse(ai.replace("+", ""))).intValue();
+                    if (auto_increment_selected == buttonvalue) aibutton.setSelected(true);
+                    aibutton.addActionListener(new ActionListener() {
+                        @Override
+                        public void actionPerformed(ActionEvent e) {
+                            auto_increment_selected = buttonvalue;
+                        }
+                    });
+                    pnl.add(aibutton, GBC.std());
+                } catch (ParseException x) {
+                    Main.error("Cannot parse auto-increment value of '" + ai + "' into an integer");
+                }
+            }
+
+            // an invisible toggle button for "release" of the button group
+            final JToggleButton clearbutton = new JToggleButton("X");
+            clearbutton.setVisible(false);
+            clearbutton.setFocusable(false);
+            bg.add(clearbutton);
+            // and its visible counterpart. - this mechanism allows us to
+            // have *no* button selected after the X is clicked, instead
+            // of the X remaining selected
+            JButton releasebutton = new JButton("X");
+            releasebutton.setToolTipText(tr("Cancel auto-increment for this field"));
+            releasebutton.setMargin(new java.awt.Insets(0, 0, 0, 0));
+            releasebutton.setFocusable(false);
+            releasebutton.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    auto_increment_selected = 0;
+                    clearbutton.setSelected(true);
+                }
+            });
+            saveHorizontalSpace(releasebutton);
+            pnl.add(releasebutton, GBC.eol());
+            value = pnl;
+        }
+        p.add(new JLabel(locale_text+':'), GBC.std().insets(0, 0, 10, 0));
+        p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
+        return true;
+    }
+
+    private static void saveHorizontalSpace(AbstractButton button) {
+        Insets insets = button.getBorder().getBorderInsets(button);
+        // Ensure the current look&feel does not waste horizontal space (as seen in Nimbus & Aqua)
+        if (insets != null && insets.left+insets.right > insets.top+insets.bottom) {
+            int min = Math.min(insets.top, insets.bottom);
+            button.setBorder(BorderFactory.createEmptyBorder(insets.top, min, insets.bottom, min));
+        }
+    }
+
+    private static String getValue(Component comp) {
+        if (comp instanceof JosmComboBox) {
+            return ((JosmComboBox<?>) comp).getEditor().getItem().toString();
+        } else if (comp instanceof JosmTextField) {
+            return ((JosmTextField) comp).getText();
+        } else if (comp instanceof JPanel) {
+            return getValue(((JPanel) comp).getComponent(0));
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+
+        // return if unchanged
+        String v = getValue(value);
+        if (v == null) {
+            Main.error("No 'last value' support for component " + value);
+            return;
+        }
+
+        v = Tag.removeWhiteSpaces(v);
+
+        if (!"false".equals(use_last_as_default) || auto_increment != null) {
+            LAST_VALUES.put(key, v);
+        }
+        if (v.equals(originalValue) || (originalValue == null && v.isEmpty()))
+            return;
+
+        changedTags.add(new Tag(key, v));
+        AutoCompletionManager.rememberUserInput(key, v, true);
+    }
+
+    @Override
+    public MatchType getDefaultMatch() {
+        return MatchType.NONE;
+    }
+
+    @Override
+    public Collection<String> getValues() {
+        if (default_ == null || default_.isEmpty())
+            return Collections.emptyList();
+        return Collections.singleton(default_);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java
new file mode 100644
index 0000000..7d90cce
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging.presets.items;
+
+import java.util.List;
+
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+
+/**
+ * A tagging preset item displaying a localizable text.
+ * @since 6190
+ */
+public abstract class TextItem extends TaggingPresetItem {
+
+    /** The text to display */
+    public String text;
+
+    /** The context used for translating {@link #text} */
+    public String text_context;
+
+    /** The localized version of {@link #text} */
+    public String locale_text;
+
+    protected final void initializeLocaleText(String defaultText) {
+        if (locale_text == null) {
+            locale_text = getLocaleText(text, text_context, defaultText);
+        }
+    }
+
+    @Override
+    public void addCommands(List<Tag> changedTags) {
+    }
+
+    protected String fieldsToString() {
+        return (text != null ? "text=" + text + ", " : "")
+                + (text_context != null ? "text_context=" + text_context + ", " : "")
+                + (locale_text != null ? "locale_text=" + locale_text : "");
+    }
+
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + " [" + fieldsToString() + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/package-info.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/package-info.java
new file mode 100644
index 0000000..c9c5d95
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes for handling tagging presets items.
+ */
+package org.openstreetmap.josm.gui.tagging.presets.items;
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/package-info.java b/src/org/openstreetmap/josm/gui/tagging/presets/package-info.java
new file mode 100644
index 0000000..a04241e
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes for handling tagging presets.
+ */
+package org.openstreetmap.josm.gui.tagging.presets;
diff --git a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
index d70b6d0..c4dc6a8 100644
--- a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
+++ b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
@@ -130,7 +130,7 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
                 if (isFocusInMainWindow()) {
                     for (KeyPressReleaseListener q: keyListeners) {
                         if (Main.isDebugEnabled()) {
-                            Main.debug(q+" => doKeyPressed("+e+")");
+                            Main.debug(q+" => doKeyPressed("+e+')');
                         }
                         q.doKeyPressed(e);
                     }
@@ -143,7 +143,7 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
                     if (isFocusInMainWindow()) {
                         for (KeyPressReleaseListener q: keyListeners) {
                             if (Main.isDebugEnabled()) {
-                                Main.debug(q+" => doKeyReleased("+e+")");
+                                Main.debug(q+" => doKeyReleased("+e+')');
                             }
                             q.doKeyReleased(e);
                         }
@@ -197,7 +197,7 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
         }
     }
 
-    private boolean isFocusInMainWindow() {
+    private static boolean isFocusInMainWindow() {
         Component focused = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
         return focused != null && SwingUtilities.getWindowAncestor(focused) instanceof JFrame;
     }
diff --git a/src/org/openstreetmap/josm/gui/util/GuiHelper.java b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
index 614e612..0d8261f 100644
--- a/src/org/openstreetmap/josm/gui/util/GuiHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
@@ -315,6 +315,7 @@ public final class GuiHelper {
 
     /**
      * Gets the font used to display JOSM title in about dialog and splash screen.
+     * @return title font
      * @since 5797
      */
     public static Font getTitleFont() {
@@ -359,7 +360,7 @@ public final class GuiHelper {
         while (keys.hasMoreElements()) {
             Object key = keys.nextElement();
             Object value = UIManager.get(key);
-            if (value != null && value instanceof FontUIResource) {
+            if (value instanceof FontUIResource) {
                 FontUIResource fui = (FontUIResource) value;
                 UIManager.put(key, new FontUIResource(name, fui.getStyle(), fui.getSize()));
             }
diff --git a/src/org/openstreetmap/josm/gui/util/HighlightHelper.java b/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
index 73a6f67..353db6a 100644
--- a/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
@@ -22,6 +22,7 @@ public class HighlightHelper {
     /**
      * Highlight and remember given primitives
      * @param prims - primitives to highlight/unhighlight
+     * @return {@code true} if a repaint is needed
      */
     public boolean highlight(Collection<? extends OsmPrimitive> prims) {
         return highlight(prims, false);
@@ -31,6 +32,7 @@ public class HighlightHelper {
      * Highlight and remember given primitives
      * @param prims - primitives to highlight/unhighlight
      * @param only - remove previous highlighting
+     * @return {@code true} if a repaint is needed
      */
     public boolean highlight(Collection<? extends OsmPrimitive> prims, boolean only) {
         boolean needsRepaint = false;
@@ -55,6 +57,7 @@ public class HighlightHelper {
     /**
      * Highlight and remember given primitives, forgetting previously highlighted by this instance
      * @param prims - primitives to highlight/unhighlight
+     * @return {@code true} if a repaint is needed
      */
     public boolean highlightOnly(Collection<? extends OsmPrimitive> prims) {
         return highlight(prims, true);
@@ -63,6 +66,7 @@ public class HighlightHelper {
     /**
      * Highlight and remember given primitive, forgetting previously highlighted by this instance
      * @param p - primitives to highlight/unhighlight
+     * @return {@code true} if a repaint is needed
      */
     public boolean highlightOnly(OsmPrimitive p) {
         return highlight(Collections.singleton(p), true);
@@ -72,6 +76,7 @@ public class HighlightHelper {
      * Highlight and remember given primitive
      * @param p - primitive to highlight/unhighlight
      * @param flag - true to highlight
+     * @return {@code true} if a repaint is needed
      */
     public boolean setHighlight(OsmPrimitive p, boolean flag) {
         return setHighlight(p, flag, new HashSet<Relation>());
diff --git a/src/org/openstreetmap/josm/gui/util/RotationAngle.java b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
index ce55803..9135eba 100644
--- a/src/org/openstreetmap/josm/gui/util/RotationAngle.java
+++ b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
@@ -14,13 +14,18 @@ import org.openstreetmap.josm.tools.Utils;
  * Determines how an icon is to be rotated depending on the primitive to displayed.
  */
 public abstract class RotationAngle {
+
     /**
      * Calculates the rotation angle depending on the primitive to displayed.
+     * @param p primitive
+     * @return rotation angle
      */
     public abstract double getRotationAngle(OsmPrimitive p);
 
     /**
      * Always returns the fixed {@code angle}.
+     * @param angle angle
+     * @return rotation angle
      */
     public static RotationAngle buildStaticRotation(final double angle) {
         return new RotationAngle() {
@@ -38,6 +43,8 @@ public abstract class RotationAngle {
 
     /**
      * Parses the rotation angle from the specified {@code string}.
+     * @param string angle as string
+     * @return rotation angle
      */
     public static RotationAngle buildStaticRotation(final String string) {
         try {
@@ -88,6 +95,7 @@ public abstract class RotationAngle {
 
     /**
      * Computes the angle depending on the referencing way segment, or {@code 0} if none exists.
+     * @return rotation angle
      */
     public static RotationAngle buildWayDirectionRotation() {
         return new RotationAngle() {
diff --git a/src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java b/src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java
index 60cab6f..2c95fdd 100644
--- a/src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java
+++ b/src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java
@@ -39,7 +39,7 @@ public abstract class AbstractTextComponentValidator implements ActionListener,
     /** remembers whether the content of the text component is currently valid or not; null means,
      * we don't know yet
      */
-    private Boolean valid = null;
+    private Boolean valid;
     // remember the message
     private String msg;
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java b/src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java
index cc2de9f..e31139e 100644
--- a/src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java
+++ b/src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java
@@ -27,7 +27,7 @@ import org.openstreetmap.josm.tools.OsmUrlToBounds;
  */
 public class BoundingBoxSelectionPanel extends JPanel {
 
-    private JosmTextField[] tfLatLon = null;
+    private JosmTextField[] tfLatLon;
     private final JosmTextField tfOsmUrl = new JosmTextField();
 
     protected void buildInputFields() {
@@ -129,7 +129,7 @@ public class BoundingBoxSelectionPanel extends JPanel {
             new LatitudeValidator(tc);
         }
 
-        public LatitudeValidator(JTextComponent tc) {
+        LatitudeValidator(JTextComponent tc) {
             super(tc);
         }
 
@@ -169,7 +169,7 @@ public class BoundingBoxSelectionPanel extends JPanel {
             new LongitudeValidator(tc);
         }
 
-        public LongitudeValidator(JTextComponent tc) {
+        LongitudeValidator(JTextComponent tc) {
             super(tc);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
index 996240f..674573c 100644
--- a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
@@ -43,7 +43,7 @@ public class ChangesetIdTextField extends AbstractIdTextField<ChangesetIdTextFie
      */
     public static class ChangesetIdValidator extends AbstractTextComponentValidator {
 
-        private int id = 0;
+        private int id;
 
         /**
          * Constructs a new {@link ChangesetIdValidator}
diff --git a/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java b/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
index c606631..77cc41c 100644
--- a/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
@@ -157,6 +157,8 @@ public class DisableShortcutsOnFocusGainedTextField extends JosmTextField {
 
     /**
      * Returns true if the given shortcut has no modifier and is not an actions key.
+     * @param ks key stroke
+     * @return {@code true} if the given shortcut has to be disabled
      * @see KeyEvent#isActionKey()
      */
     protected boolean hasToBeDisabled(KeyStroke ks) {
diff --git a/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java b/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java
index fb5aabc..b9fbacc 100644
--- a/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java
+++ b/src/org/openstreetmap/josm/gui/widgets/HtmlPanel.java
@@ -36,7 +36,7 @@ public class HtmlPanel extends JPanel {
                 f.isBold() ? "bold" : "normal",
                         f.isItalic() ? "italic" : "normal"
         );
-        rule = "body {" + rule + "}";
+        rule = "body {" + rule + '}';
         rule = MessageFormat.format(
                 "font-family: ''{0}'';font-size: {1,number}pt; font-weight: {2}; font-style: {3}",
                 f.getName(),
@@ -44,7 +44,7 @@ public class HtmlPanel extends JPanel {
                 "bold",
                 f.isItalic() ? "italic" : "normal"
         );
-        rule = "strong {" + rule + "}";
+        rule = "strong {" + rule + '}';
         ss.addRule(rule);
         ss.addRule("a {text-decoration: underline; color: blue}");
         ss.addRule("ul {margin-left: 1cm; list-style-type: disc}");
diff --git a/src/org/openstreetmap/josm/gui/widgets/JMultilineLabel.java b/src/org/openstreetmap/josm/gui/widgets/JMultilineLabel.java
index 9cfc732..689e698 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JMultilineLabel.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JMultilineLabel.java
@@ -20,8 +20,8 @@ import javax.swing.text.View;
  */
 public class JMultilineLabel extends JEditorPane {
     private int maxWidth = Integer.MAX_VALUE;
-    private Rectangle oldbounds = null;
-    private Dimension oldPreferred = null;
+    private Rectangle oldbounds;
+    private Dimension oldPreferred;
 
     /**
      * Constructs a normal label but adds HTML tags if not already done so.
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java b/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
index 5910410..5beafc0 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
@@ -98,14 +98,14 @@ public class JosmEditorPane extends JEditorPane {
         JosmHTMLEditorKit kit = new JosmHTMLEditorKit();
         final Font f = UIManager.getFont("Label.font");
         final StyleSheet ss = new StyleSheet();
-        ss.addRule((allBold ? "html" : "strong, b") + " {" + getFontRule(f) + "}");
+        ss.addRule((allBold ? "html" : "strong, b") + " {" + getFontRule(f) + '}');
         ss.addRule("a {text-decoration: underline; color: blue}");
-        ss.addRule("h1 {" + getFontRule(GuiHelper.getTitleFont()) + "}");
+        ss.addRule("h1 {" + getFontRule(GuiHelper.getTitleFont()) + '}');
         ss.addRule("ol {margin-left: 1cm; margin-top: 0.1cm; margin-bottom: 0.2cm; list-style-type: decimal}");
         ss.addRule("ul {margin-left: 1cm; margin-top: 0.1cm; margin-bottom: 0.2cm; list-style-type: disc}");
         if ("km".equals(LanguageInfo.getJOSMLocaleCode())) {
             // Fix rendering problem for Khmer script
-            ss.addRule("p {" + getFontRule(UIManager.getFont("Label.font")) + "}");
+            ss.addRule("p {" + getFontRule(UIManager.getFont("Label.font")) + '}');
         }
         kit.setStyleSheet(ss);
         pane.setEditorKit(kit);
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java
index 2edff15..586cd70 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLEditorKit.java
@@ -1,17 +1,22 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.widgets;
 
+import javax.swing.text.ViewFactory;
 import javax.swing.text.html.HTMLEditorKit;
 import javax.swing.text.html.StyleSheet;
 
 /**
  * A subclass of {@link HTMLEditorKit} that fixes an uncommon design choice that shares the set stylesheet between all instances.
  * This class stores a single stylesheet per instance, as it should have be done by Sun in the first place.
+ * Moreover it allows to display SVG images.
  * @since 6040
  */
 public class JosmHTMLEditorKit extends HTMLEditorKit {
 
-    protected StyleSheet ss = super.getStyleSheet();
+    /** Shared factory for creating HTML Views. */
+    private static final ViewFactory FACTORY = new JosmHTMLFactory();
+
+    private StyleSheet ss = super.getStyleSheet();
 
     /**
      * Set the set of styles to be used to render the various HTML elements.
@@ -41,4 +46,9 @@ public class JosmHTMLEditorKit extends HTMLEditorKit {
     public StyleSheet getStyleSheet() {
         return ss;
     }
+
+    @Override
+    public ViewFactory getViewFactory() {
+        return FACTORY;
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java
new file mode 100644
index 0000000..797cd87
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmHTMLFactory.java
@@ -0,0 +1,37 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.widgets;
+
+import javax.swing.text.AbstractDocument;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.Element;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.View;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit.HTMLFactory;
+
+import org.openstreetmap.josm.Main;
+
+/**
+ * Specialized HTML Factory allowing to display SVG images.
+ * @since 8933
+ */
+public class JosmHTMLFactory extends HTMLFactory {
+
+    @Override
+    public View create(Element elem) {
+        AttributeSet attrs = elem.getAttributes();
+        Object elementName = attrs.getAttribute(AbstractDocument.ElementNameAttribute);
+        Object o = (elementName != null) ? null : attrs.getAttribute(StyleConstants.NameAttribute);
+        if (o instanceof HTML.Tag) {
+            HTML.Tag kind = (HTML.Tag) o;
+            if (kind == HTML.Tag.IMG) {
+                try {
+                    return new JosmImageView(elem);
+                } catch (NoSuchFieldException | SecurityException e) {
+                    Main.error(e);
+                }
+            }
+        }
+        return super.create(elem);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java b/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
new file mode 100644
index 0000000..9cbec89
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmImageView.java
@@ -0,0 +1,169 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.widgets;
+
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Shape;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.Element;
+import javax.swing.text.html.ImageView;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * Specialized Image View allowing to display SVG images.
+ * @since 8933
+ */
+public class JosmImageView extends ImageView {
+
+    private static final int LOADING_FLAG = 1;
+    private static final int WIDTH_FLAG = 4;
+    private static final int HEIGHT_FLAG = 8;
+    private static final int RELOAD_FLAG = 16;
+    private static final int RELOAD_IMAGE_FLAG = 32;
+
+    private final Field imageField;
+    private final Field stateField;
+    private final Field widthField;
+    private final Field heightField;
+
+    /**
+     * Constructs a new {@code JosmImageView}.
+     * @param elem the element to create a view for
+     * @throws SecurityException see {@link Class#getDeclaredField} for details
+     * @throws NoSuchFieldException see {@link Class#getDeclaredField} for details
+     */
+    public JosmImageView(Element elem) throws NoSuchFieldException, SecurityException {
+        super(elem);
+        imageField = ImageView.class.getDeclaredField("image");
+        stateField = ImageView.class.getDeclaredField("state");
+        widthField = ImageView.class.getDeclaredField("width");
+        heightField = ImageView.class.getDeclaredField("height");
+        imageField.setAccessible(true);
+        stateField.setAccessible(true);
+        widthField.setAccessible(true);
+        heightField.setAccessible(true);
+    }
+
+    /**
+     * Makes sure the necessary properties and image is loaded.
+     */
+    private void sync() {
+        try {
+            int s = (int) stateField.get(this);
+            if ((s & RELOAD_IMAGE_FLAG) != 0) {
+                refreshImage();
+            }
+            s = (int) stateField.get(this);
+            if ((s & RELOAD_FLAG) != 0) {
+                synchronized (this) {
+                    stateField.set(this, ((int) stateField.get(this) | RELOAD_FLAG) ^ RELOAD_FLAG);
+                }
+                setPropertiesFromAttributes();
+            }
+        } catch (IllegalArgumentException | IllegalAccessException |
+                InvocationTargetException | NoSuchMethodException | SecurityException e) {
+           Main.error(e);
+       }
+    }
+
+    /**
+     * Loads the image and updates the size accordingly. This should be
+     * invoked instead of invoking <code>loadImage</code> or
+     * <code>updateImageSize</code> directly.
+     * @throws IllegalAccessException see {@link Field#set} and {@link Method#invoke} for details
+     * @throws IllegalArgumentException see {@link Field#set} and {@link Method#invoke} for details
+     * @throws InvocationTargetException see {@link Method#invoke} for details
+     * @throws NoSuchMethodException see {@link Class#getDeclaredMethod} for details
+     * @throws SecurityException see {@link Class#getDeclaredMethod} for details
+     */
+    private void refreshImage() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException,
+        NoSuchMethodException, SecurityException {
+        synchronized (this) {
+            // clear out width/height/reloadimage flag and set loading flag
+            stateField.set(this, ((int) stateField.get(this) | LOADING_FLAG | RELOAD_IMAGE_FLAG | WIDTH_FLAG |
+                     HEIGHT_FLAG) ^ (WIDTH_FLAG | HEIGHT_FLAG |
+                                     RELOAD_IMAGE_FLAG));
+            imageField.set(this, null);
+            widthField.set(this, 0);
+            heightField.set(this, 0);
+        }
+
+        try {
+            // Load the image
+            loadImage();
+
+            // And update the size params
+            Method updateImageSize = ImageView.class.getDeclaredMethod("updateImageSize");
+            updateImageSize.setAccessible(true);
+            updateImageSize.invoke(this);
+        } finally {
+            synchronized (this) {
+                // Clear out state in case someone threw an exception.
+                stateField.set(this, ((int) stateField.get(this) | LOADING_FLAG) ^ LOADING_FLAG);
+            }
+        }
+    }
+
+    /**
+     * Loads the image from the URL <code>getImageURL</code>. This should
+     * only be invoked from <code>refreshImage</code>.
+     * @throws IllegalAccessException see {@link Field#set} and {@link Method#invoke} for details
+     * @throws IllegalArgumentException see {@link Field#set} and {@link Method#invoke} for details
+     * @throws InvocationTargetException see {@link Method#invoke} for details
+     * @throws NoSuchMethodException see {@link Class#getDeclaredMethod} for details
+     * @throws SecurityException see {@link Class#getDeclaredMethod} for details
+     */
+    private void loadImage() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException,
+        NoSuchMethodException, SecurityException {
+        URL src = getImageURL();
+        if (src != null) {
+            String urlStr = src.toExternalForm();
+            if (urlStr.endsWith(".svg") || urlStr.endsWith(".svg?format=raw")) {
+                imageField.set(this, new ImageProvider(urlStr).get().getImage());
+            } else {
+                Method loadImage = ImageView.class.getDeclaredMethod("loadImage");
+                loadImage.setAccessible(true);
+                loadImage.invoke(this);
+            }
+        } else {
+            imageField.set(this, null);
+        }
+    }
+
+    @Override
+    public Image getImage() {
+        sync();
+        return super.getImage();
+    }
+
+    @Override
+    public AttributeSet getAttributes() {
+        sync();
+        return super.getAttributes();
+    }
+
+    @Override
+    public void paint(Graphics g, Shape a) {
+        sync();
+        super.paint(g, a);
+    }
+
+    @Override
+    public float getPreferredSpan(int axis) {
+        sync();
+        return super.getPreferredSpan(axis);
+    }
+
+    @Override
+    public void setSize(float width, float height) {
+        sync();
+        super.setSize(width, height);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java b/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
index 463b561..cb424b0 100644
--- a/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
+++ b/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
@@ -311,7 +311,7 @@ public class MultiSplitLayout implements LayoutManager {
         }
     }
 
-    private Dimension sizeWithInsets(Container parent, Dimension size) {
+    private static Dimension sizeWithInsets(Container parent, Dimension size) {
         Insets insets = parent.getInsets();
         int width = size.width + insets.left + insets.right;
         int height = size.height + insets.top + insets.bottom;
@@ -330,13 +330,13 @@ public class MultiSplitLayout implements LayoutManager {
         return sizeWithInsets(parent, size);
     }
 
-    private Rectangle boundsWithYandHeight(Rectangle bounds, double y, double height) {
+    private static Rectangle boundsWithYandHeight(Rectangle bounds, double y, double height) {
         Rectangle r = new Rectangle();
         r.setBounds((int) (bounds.getX()), (int) y, (int) (bounds.getWidth()), (int) height);
         return r;
     }
 
-    private Rectangle boundsWithXandWidth(Rectangle bounds, double x, double width) {
+    private static Rectangle boundsWithXandWidth(Rectangle bounds, double x, double width) {
         Rectangle r = new Rectangle();
         r.setBounds((int) x, (int) (bounds.getY()), (int) width, (int) (bounds.getHeight()));
         return r;
@@ -818,9 +818,9 @@ public class MultiSplitLayout implements LayoutManager {
      * Base class for the nodes that model a MultiSplitLayout.
      */
     public abstract static class Node {
-        private Split parent = null;
+        private Split parent;
         private Rectangle bounds = new Rectangle();
-        private double weight = 0.0;
+        private double weight;
 
         /**
          * Returns the Split parent of this Node, or null.
@@ -1157,7 +1157,7 @@ public class MultiSplitLayout implements LayoutManager {
                 throwParseException(st, "invalid name");
             }
         } else {
-            throwParseException(st, "unrecognized attribute \"" + name + "\"");
+            throwParseException(st, "unrecognized attribute \"" + name + '\"');
         }
     }
 
@@ -1212,7 +1212,7 @@ public class MultiSplitLayout implements LayoutManager {
                     addSplitChild(parent, split);
                     parseSplit(st, split);
                 } else {
-                    throwParseException(st, "unrecognized node type '" + nodeType + "'");
+                    throwParseException(st, "unrecognized node type '" + nodeType + '\'');
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
index 797d481..d905ed4 100644
--- a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
+++ b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
@@ -46,7 +46,7 @@ import org.openstreetmap.josm.gui.widgets.MultiSplitLayout.Node;
  * @author Hans Muller - SwingX
  */
 public class MultiSplitPane extends JPanel {
-    private transient AccessibleContext accessibleContext = null;
+    private transient AccessibleContext accessibleContext;
     private boolean continuousLayout = true;
     private transient DividerPainter dividerPainter = new DefaultDividerPainter();
 
@@ -218,12 +218,12 @@ public class MultiSplitPane extends JPanel {
         }
     }
 
-    private boolean dragUnderway = false;
-    private transient MultiSplitLayout.Divider dragDivider = null;
-    private Rectangle initialDividerBounds = null;
+    private boolean dragUnderway;
+    private transient MultiSplitLayout.Divider dragDivider;
+    private Rectangle initialDividerBounds;
     private boolean oldFloatingDividers = true;
-    private int dragOffsetX = 0;
-    private int dragOffsetY = 0;
+    private int dragOffsetX;
+    private int dragOffsetY;
     private int dragMin = -1;
     private int dragMax = -1;
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
index 707f11f..9e1909e 100644
--- a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
+++ b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
@@ -157,6 +157,7 @@ public class QuadStateCheckBox extends JCheckBox {
          * but not armed, PARTIAL state when the checkbox is
          * selected and armed (grey) and NOT_SELECTED when the
          * checkbox is deselected.
+         * @return current state
          */
         private State getState() {
             if (isSelected() && !isArmed()) {
diff --git a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
index 2f078c8..00947f6 100644
--- a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
+++ b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
@@ -44,7 +44,7 @@ public class TextContextualPopupMenu extends JPopupMenu {
 
     private static final String EDITABLE = "editable";
 
-    protected JTextComponent component = null;
+    protected JTextComponent component;
     protected boolean undoRedo;
     protected final UndoAction undoAction = new UndoAction();
     protected final RedoAction redoAction = new RedoAction();
diff --git a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
index 788503b..2fccf42 100644
--- a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
+++ b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
@@ -47,7 +47,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
     private GpxData downloadRawGps(Bounds b, ProgressMonitor progressMonitor) throws IOException, OsmTransferException, SAXException {
         boolean done = false;
         GpxData result = null;
-        String url = "trackpoints?bbox="+b.getMinLon()+","+b.getMinLat()+","+b.getMaxLon()+","+b.getMaxLat()+"&page=";
+        String url = "trackpoints?bbox="+b.getMinLon()+','+b.getMinLat()+','+b.getMaxLon()+','+b.getMaxLat()+"&page=";
         for (int i = 0; !done; ++i) {
             progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * 5000, (i + 1) * 5000));
             try (InputStream in = getInputStream(url+i, progressMonitor.createSubTaskMonitor(1, true))) {
@@ -113,6 +113,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
 
     /**
      * Returns the name of the download task to be displayed in the {@link ProgressMonitor}.
+     * @return task name
      */
     protected String getTaskName() {
         return tr("Contacting OSM Server...");
@@ -120,13 +121,22 @@ public class BoundingBoxDownloader extends OsmServerReader {
 
     /**
      * Builds the request part for the bounding box.
+     * @param lon1 left
+     * @param lat1 bottom
+     * @param lon2 right
+     * @param lat2 top
+     * @return "map?bbox=left,bottom,right,top"
      */
     protected String getRequestForBbox(double lon1, double lat1, double lon2, double lat2) {
-        return "map?bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+        return "map?bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
     }
 
     /**
      * Parse the given input source and return the dataset.
+     * @param source input stream
+     * @param progressMonitor progress monitor
+     * @return dataset
+     * @throws IllegalDataException if an error was found while parsing the OSM data
      *
      * @see OsmReader#parseDataSet(InputStream, ProgressMonitor)
      */
@@ -189,7 +199,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
         // see result_limit in https://github.com/openstreetmap/openstreetmap-website/blob/master/app/controllers/notes_controller.rb
         CheckParameterUtil.ensureThat(noteLimit <= 10000, "Requested note limit is over API hard limit of 10000.");
         CheckParameterUtil.ensureThat(daysClosed >= -1, "Requested note limit is less than -1.");
-        String url = "notes?limit=" + noteLimit + "&closed=" + daysClosed + "&bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+        String url = "notes?limit=" + noteLimit + "&closed=" + daysClosed + "&bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
         try {
             InputStream is = getInputStream(url, progressMonitor.createSubTaskMonitor(1, false));
             NoteReader reader = new NoteReader(is);
diff --git a/src/org/openstreetmap/josm/io/CacheCustomContent.java b/src/org/openstreetmap/josm/io/CacheCustomContent.java
index c35cf89..caa9cbf 100644
--- a/src/org/openstreetmap/josm/io/CacheCustomContent.java
+++ b/src/org/openstreetmap/josm/io/CacheCustomContent.java
@@ -37,7 +37,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
     /**
      * Where the data will be stored
      */
-    private byte[] data = null;
+    private byte[] data;
 
     /**
      * The ident that identifies the stored file. Includes file-ending.
@@ -59,6 +59,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
      * inheriting class and should use a worker if it has a long wall time as the function is
      * executed in the current thread.
      * @return the data to cache
+     * @throws T a {@link Throwable}
      */
     protected abstract byte[] updateData() throws T;
 
@@ -174,6 +175,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
 
     /**
      * Tries to load the data using the given ident from disk. If this fails, data will be updated, unless run in offline mode
+     * @throws T a {@link Throwable}
      */
     private void loadFromDisk() throws T {
         try (BufferedInputStream input = new BufferedInputStream(new FileInputStream(path))) {
diff --git a/src/org/openstreetmap/josm/io/CachedFile.java b/src/org/openstreetmap/josm/io/CachedFile.java
index 4b624c5..486824f 100644
--- a/src/org/openstreetmap/josm/io/CachedFile.java
+++ b/src/org/openstreetmap/josm/io/CachedFile.java
@@ -68,8 +68,8 @@ public class CachedFile {
     protected String httpAccept;
     protected CachingStrategy cachingStrategy;
 
-    protected File cacheFile = null;
-    protected boolean initialized = false;
+    protected File cacheFile;
+    protected boolean initialized;
 
     public static final long DEFAULT_MAXTIME = -1L;
     public static final long DAYS = 24*60*60; // factor to get caching time in days
@@ -288,7 +288,7 @@ public class CachedFile {
             Enumeration<? extends ZipEntry> entries = zipFile.entries();
             while (entries.hasMoreElements()) {
                 ZipEntry entry = entries.nextElement();
-                if (entry.getName().endsWith("." + extension)) {
+                if (entry.getName().endsWith('.' + extension)) {
                     /* choose any file with correct extension. When more than
                         one file, prefer the one which matches namepart */
                     if (resentry == null || entry.getName().indexOf(namepart) >= 0) {
@@ -350,6 +350,9 @@ public class CachedFile {
      * Get preference key to store the location and age of the cached file.
      * 2 resources that point to the same url, but that are to be stored in different
      * directories will not share a cache file.
+     * @param url URL
+     * @param destDir destination directory
+     * @return Preference key
      */
     private static String getPrefKey(URL url, String destDir) {
         StringBuilder prefKey = new StringBuilder("mirror.");
@@ -414,7 +417,7 @@ public class CachedFile {
             HttpURLConnection con = connectFollowingRedirect(url, httpAccept, ifModifiedSince, httpHeaders);
             if (ifModifiedSince != null && con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
                 if (Main.isDebugEnabled()) {
-                    Main.debug("304 Not Modified ("+urlStr+")");
+                    Main.debug("304 Not Modified ("+urlStr+')');
                 }
                 if (localFile == null)
                     throw new AssertionError();
diff --git a/src/org/openstreetmap/josm/io/ChangesetClosedException.java b/src/org/openstreetmap/josm/io/ChangesetClosedException.java
index 55d73bb..7ab2d3e 100644
--- a/src/org/openstreetmap/josm/io/ChangesetClosedException.java
+++ b/src/org/openstreetmap/josm/io/ChangesetClosedException.java
@@ -30,7 +30,7 @@ public class ChangesetClosedException extends OsmTransferException {
      */
     public static final String ERROR_HEADER_PATTERN = "The changeset (\\d+) was closed at (.*)";
 
-    public static enum Source {
+    public enum Source {
         /**
          * The exception was thrown when a changeset was updated. This most likely means
          * that the changeset was closed before.
diff --git a/src/org/openstreetmap/josm/io/ChangesetQuery.java b/src/org/openstreetmap/josm/io/ChangesetQuery.java
index b469e93..7b651d9 100644
--- a/src/org/openstreetmap/josm/io/ChangesetQuery.java
+++ b/src/org/openstreetmap/josm/io/ChangesetQuery.java
@@ -35,20 +35,20 @@ public class ChangesetQuery {
     }
 
     /** the user id this query is restricted to. null, if no restriction to a user id applies */
-    private Integer uid = null;
+    private Integer uid;
     /** the user name this query is restricted to. null, if no restriction to a user name applies */
-    private String userName = null;
+    private String userName;
     /** the bounding box this query is restricted to. null, if no restriction to a bounding box applies */
-    private Bounds bounds = null;
+    private Bounds bounds;
 
-    private Date closedAfter = null;
-    private Date createdBefore = null;
+    private Date closedAfter;
+    private Date createdBefore;
     /** indicates whether only open changesets are queried. null, if no restrictions regarding open changesets apply */
-    private Boolean open = null;
+    private Boolean open;
     /** indicates whether only closed changesets are queried. null, if no restrictions regarding open changesets apply */
-    private Boolean closed = null;
+    private Boolean closed;
     /** a collection of changeset ids to query for */
-    private Collection<Long> changesetIds = null;
+    private Collection<Long> changesetIds;
 
     /**
      * Restricts the query to changesets owned by the user with id <code>uid</code>.
diff --git a/src/org/openstreetmap/josm/io/Compression.java b/src/org/openstreetmap/josm/io/Compression.java
index cd19626..498c60b 100644
--- a/src/org/openstreetmap/josm/io/Compression.java
+++ b/src/org/openstreetmap/josm/io/Compression.java
@@ -53,6 +53,8 @@ public enum Compression {
 
     /**
      * Returns an un-compressing {@link InputStream} for {@code in}.
+     * @param in raw input stream
+     * @return un-compressing input stream
      *
      * @throws IOException if any I/O error occurs
      */
@@ -72,7 +74,8 @@ public enum Compression {
 
     /**
      * Returns an un-compressing {@link InputStream} for the {@link File} {@code file}.
-     *
+     * @param file file
+     * @return un-compressing input stream
      * @throws IOException if any I/O error occurs
      */
     @SuppressWarnings("resource")
@@ -82,6 +85,8 @@ public enum Compression {
 
     /**
      * Returns an un-compressing {@link InputStream} for the {@link URL} {@code url}.
+     * @param url URL
+     * @return un-compressing input stream
      *
      * @throws IOException if any I/O error occurs
      */
@@ -91,6 +96,8 @@ public enum Compression {
 
     /**
      * Returns a compressing {@link OutputStream} for {@code out}.
+     * @param out raw output stream
+     * @return compressing output stream
      *
      * @throws IOException if any I/O error occurs
      */
@@ -110,6 +117,8 @@ public enum Compression {
 
     /**
      * Returns a compressing {@link OutputStream} for the {@link File} {@code file}.
+     * @param file file
+     * @return compressing output stream
      *
      * @throws IOException if any I/O error occurs
      */
diff --git a/src/org/openstreetmap/josm/io/DefaultProxySelector.java b/src/org/openstreetmap/josm/io/DefaultProxySelector.java
index 889129c..def321c 100644
--- a/src/org/openstreetmap/josm/io/DefaultProxySelector.java
+++ b/src/org/openstreetmap/josm/io/DefaultProxySelector.java
@@ -40,7 +40,7 @@ public class DefaultProxySelector extends ProxySelector {
      *
      * We therefore read the property at class loading time and remember it's value.
      */
-    private static boolean JVM_WILL_USE_SYSTEM_PROXIES = false;
+    private static boolean JVM_WILL_USE_SYSTEM_PROXIES;
     static {
         String v = System.getProperty("java.net.useSystemProxies");
         if (v != null && v.equals(Boolean.TRUE.toString())) {
diff --git a/src/org/openstreetmap/josm/io/FileImporter.java b/src/org/openstreetmap/josm/io/FileImporter.java
index a36b642..115e541 100644
--- a/src/org/openstreetmap/josm/io/FileImporter.java
+++ b/src/org/openstreetmap/josm/io/FileImporter.java
@@ -141,6 +141,7 @@ public abstract class FileImporter implements Comparable<FileImporter>, LayerCha
      * If multiple files (with multiple file formats) are selected,
      * they are opened in the order of their priorities.
      * Highest priority comes first.
+     * @return priority
      */
     public double getPriority() {
         return 0;
diff --git a/src/org/openstreetmap/josm/io/GeoJSONExporter.java b/src/org/openstreetmap/josm/io/GeoJSONExporter.java
index f439848..875d044 100644
--- a/src/org/openstreetmap/josm/io/GeoJSONExporter.java
+++ b/src/org/openstreetmap/josm/io/GeoJSONExporter.java
@@ -9,26 +9,47 @@ import java.io.Writer;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
+import org.openstreetmap.josm.tools.Utils;
 
 public class GeoJSONExporter extends FileExporter {
 
+    protected final Projection projection;
     public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
             "geojson,json", "geojson", tr("GeoJSON Files") + " (*.geojson *.json)");
+    public static final ExtensionFileFilter FILE_FILTER_PROJECTED = new ExtensionFileFilter(
+            "proj.geojson", "proj.geojson", tr("Projected GeoJSON Files") + " (*.proj.geojson)");
 
     /**
-     * Constructs a new {@code GeoJSONExporter}.
+     * A GeoJSON exporter which obtains the current map projection when exporting ({@link #exportData(File, Layer)}).
+     */
+    public static class CurrentProjection extends GeoJSONExporter {
+        public CurrentProjection() {
+            super(FILE_FILTER_PROJECTED, null);
+        }
+    }
+
+    /**
+     * Constructs a new {@code GeoJSONExporter} with WGS84 projection.
      */
     public GeoJSONExporter() {
-        super(FILE_FILTER);
+        this(FILE_FILTER, ProjectionPreference.wgs84.getProjection());
+    }
+
+    private GeoJSONExporter(ExtensionFileFilter fileFilter, Projection projection) {
+        super(fileFilter);
+        this.projection = projection;
     }
 
     @Override
     public void exportData(File file, Layer layer) throws IOException {
         if (layer instanceof OsmDataLayer) {
-            String json = new GeoJSONWriter((OsmDataLayer) layer).write();
+            String json = new GeoJSONWriter((OsmDataLayer) layer, Utils.firstNonNull(projection, Main.getProjection())).write();
             try (Writer out = Files.newBufferedWriter(file.toPath(), StandardCharsets.UTF_8)) {
                 out.write(json);
             }
diff --git a/src/org/openstreetmap/josm/io/GeoJSONWriter.java b/src/org/openstreetmap/josm/io/GeoJSONWriter.java
index a248abd..e0517e6 100644
--- a/src/org/openstreetmap/josm/io/GeoJSONWriter.java
+++ b/src/org/openstreetmap/josm/io/GeoJSONWriter.java
@@ -14,6 +14,7 @@ import javax.json.JsonWriter;
 import javax.json.stream.JsonGenerator;
 
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.INode;
@@ -23,6 +24,7 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
+import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
@@ -30,15 +32,18 @@ import org.openstreetmap.josm.gui.layer.OsmDataLayer;
  */
 public class GeoJSONWriter {
 
-    private OsmDataLayer layer;
+    private final OsmDataLayer layer;
+    private final Projection projection;
     private static final boolean skipEmptyNodes = true;
 
     /**
      * Constructs a new {@code GeoJSONWriter}.
      * @param layer The OSM data layer to save
+     * @param projection The projection to use for coordinates
      */
-    public GeoJSONWriter(OsmDataLayer layer) {
+    public GeoJSONWriter(OsmDataLayer layer, Projection projection) {
         this.layer = layer;
+        this.projection = projection;
     }
 
     /**
@@ -62,6 +67,7 @@ public class GeoJSONWriter {
         try (JsonWriter writer = Json.createWriterFactory(config).createWriter(stringWriter)) {
             JsonObjectBuilder object = Json.createObjectBuilder()
                     .add("type", "FeatureCollection")
+                    .add("crs", Json.createObjectBuilder().add("type", "name").add("name", projection.toCode()))
                     .add("generator", "JOSM");
             appendLayerBounds(layer.data, object);
             appendLayerFeatures(layer.data, object);
@@ -70,11 +76,11 @@ public class GeoJSONWriter {
         }
     }
 
-    private static class GeometryPrimitiveVisitor implements PrimitiveVisitor {
+    private class GeometryPrimitiveVisitor implements PrimitiveVisitor {
 
         private final JsonObjectBuilder geomObj;
 
-        public GeometryPrimitiveVisitor(JsonObjectBuilder geomObj) {
+        GeometryPrimitiveVisitor(JsonObjectBuilder geomObj) {
             this.geomObj = geomObj;
         }
 
@@ -83,7 +89,7 @@ public class GeoJSONWriter {
             geomObj.add("type", "Point");
             LatLon ll = n.getCoor();
             if (ll != null) {
-                geomObj.add("coordinates", getCoorArray(n.getCoor()));
+                geomObj.add("coordinates", getCoorArray(Json.createArrayBuilder(), n.getCoor()));
             }
         }
 
@@ -95,7 +101,7 @@ public class GeoJSONWriter {
                 for (Node n : ((Way) w).getNodes()) {
                     LatLon ll = n.getCoor();
                     if (ll != null) {
-                        array.add(getCoorArray(ll));
+                        array.add(getCoorArray(Json.createArrayBuilder(), ll));
                     }
                 }
                 geomObj.add("coordinates", array);
@@ -105,13 +111,17 @@ public class GeoJSONWriter {
         @Override
         public void visit(IRelation r) {
         }
+    }
 
-        private JsonArrayBuilder getCoorArray(LatLon c) {
-            return Json.createArrayBuilder().add(c.lon()).add(c.lat());
-        }
+    private JsonArrayBuilder getCoorArray(JsonArrayBuilder builder, LatLon c) {
+        return getCoorArray(builder, projection.latlon2eastNorth(c));
+    }
+
+    private static JsonArrayBuilder getCoorArray(JsonArrayBuilder builder, EastNorth c) {
+        return builder.add(c.getX()).add(c.getY());
     }
 
-    protected static void appendPrimitive(OsmPrimitive p, JsonArrayBuilder array) {
+    protected void appendPrimitive(OsmPrimitive p, JsonArrayBuilder array) {
         if (p.isIncomplete()) {
             return;
         } else if (skipEmptyNodes && p instanceof Node && p.getKeys().isEmpty()) {
@@ -135,7 +145,7 @@ public class GeoJSONWriter {
                 .add("geometry", geomObj));
     }
 
-    protected static void appendLayerBounds(DataSet ds, JsonObjectBuilder object) {
+    protected void appendLayerBounds(DataSet ds, JsonObjectBuilder object) {
         if (ds != null) {
             Iterator<Bounds> it = ds.getDataSourceBounds().iterator();
             if (it.hasNext()) {
@@ -148,15 +158,16 @@ public class GeoJSONWriter {
         }
     }
 
-    protected static void appendBounds(Bounds b, JsonObjectBuilder object) {
+    protected void appendBounds(Bounds b, JsonObjectBuilder object) {
         if (b != null) {
-            object.add("bbox", Json.createArrayBuilder()
-                    .add(b.getMinLon()).add(b.getMinLat())
-                    .add(b.getMaxLon()).add(b.getMaxLat()));
+            JsonArrayBuilder builder = Json.createArrayBuilder();
+            getCoorArray(builder, b.getMin());
+            getCoorArray(builder, b.getMax());
+            object.add("bbox", builder);
         }
     }
 
-    protected static void appendLayerFeatures(DataSet ds, JsonObjectBuilder object) {
+    protected void appendLayerFeatures(DataSet ds, JsonObjectBuilder object) {
         JsonArrayBuilder array = Json.createArrayBuilder();
         if (ds != null) {
             for (Node n : ds.getNodes()) {
diff --git a/src/org/openstreetmap/josm/io/GpxExporter.java b/src/org/openstreetmap/josm/io/GpxExporter.java
index 8c79ee2..b49bc8b 100644
--- a/src/org/openstreetmap/josm/io/GpxExporter.java
+++ b/src/org/openstreetmap/josm/io/GpxExporter.java
@@ -26,7 +26,6 @@ import javax.swing.ListSelectionModel;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxConstants;
 import org.openstreetmap.josm.data.gpx.GpxData;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -45,6 +44,20 @@ public class GpxExporter extends FileExporter implements GpxConstants {
     private static final String GPL_WARNING = "<html><font color='red' size='-2'>"
         + tr("Note: GPL is not compatible with the OSM license. Do not upload GPL licensed tracks.") + "</html>";
 
+    private static final String[] LICENSES = {
+            "Creative Commons By-SA",
+            "Open Database License (ODbL)",
+            "public domain",
+            "GNU Lesser Public License (LGPL)",
+            "BSD License (MIT/X11)"};
+
+    private static final String[] URLS = {
+            "https://creativecommons.org/licenses/by-sa/3.0",
+            "http://opendatacommons.org/licenses/odbl/1.0",
+            "public domain",
+            "https://www.gnu.org/copyleft/lesser.html",
+            "http://www.opensource.org/licenses/bsd-license.php"};
+
     /**
      * Constructs a new {@code GpxExporter}.
      */
@@ -158,7 +171,7 @@ public class GpxExporter extends FileExporter implements GpxConstants {
         } else if (layer instanceof GpxLayer) {
             gpxData = ((GpxLayer) layer).data;
         } else {
-            gpxData = OsmDataLayer.toGpxData(getCurrentDataSet(), file);
+            gpxData = OsmDataLayer.toGpxData(Main.main.getCurrentDataSet(), file);
         }
 
         // add author and copyright details to the gpx data
@@ -291,14 +304,8 @@ public class GpxExporter extends FileExporter implements GpxConstants {
         predefined.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                final String[] licenses = {
-                        "Creative Commons By-SA",
-                        "Open Database License (ODbL)",
-                        "public domain",
-                        "GNU Lesser Public License (LGPL)",
-                        "BSD License (MIT/X11)"};
-                JList<String> l = new JList<>(licenses);
-                l.setVisibleRowCount(licenses.length);
+                JList<String> l = new JList<>(LICENSES);
+                l.setVisibleRowCount(LICENSES.length);
                 l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
                 int answer = JOptionPane.showConfirmDialog(
                         Main.parent,
@@ -309,21 +316,18 @@ public class GpxExporter extends FileExporter implements GpxConstants {
                 );
                 if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
                     return;
-                final String[] urls = {
-                        "https://creativecommons.org/licenses/by-sa/3.0",
-                        "http://opendatacommons.org/licenses/odbl/1.0",
-                        "public domain",
-                        "https://www.gnu.org/copyleft/lesser.html",
-                        "http://www.opensource.org/licenses/bsd-license.php"};
-                String license = "";
+                StringBuilder license = new StringBuilder();
                 for (int i : l.getSelectedIndices()) {
                     if (i == 2) {
-                        license = "public domain";
+                        license = new StringBuilder("public domain");
                         break;
                     }
-                    license += license.isEmpty() ? urls[i] : ", "+urls[i];
+                    if (license.length() > 0) {
+                        license.append(", ");
+                    }
+                    license.append(URLS[i]);
                 }
-                copyright.setText(license);
+                copyright.setText(license.toString());
                 copyright.setCaretPosition(0);
             }
         });
@@ -331,13 +335,4 @@ public class GpxExporter extends FileExporter implements GpxConstants {
         authorActionListener.actionPerformed(null);
         authorNameListener.keyReleased(null);
     }
-
-    /**
-     * Replies the current dataset
-     *
-     * @return the current dataset. null, if no current dataset exists
-     */
-    private DataSet getCurrentDataSet() {
-        return Main.main.getCurrentDataSet();
-    }
 }
diff --git a/src/org/openstreetmap/josm/io/GpxImporter.java b/src/org/openstreetmap/josm/io/GpxImporter.java
index d9e2c84..ec390e4 100644
--- a/src/org/openstreetmap/josm/io/GpxImporter.java
+++ b/src/org/openstreetmap/josm/io/GpxImporter.java
@@ -27,8 +27,8 @@ public class GpxImporter extends FileImporter {
     /**
      * The GPX file filter (*.gpx and *.gpx.gz files).
      */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "gpx,gpx.gz,gpx.bz2", "gpx", tr("GPX Files") + " (*.gpx *.gpx.gz, *.gpx.bz2)");
+    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "gpx", "gpx", tr("GPX Files"), true);
 
     /**
      * Utility class containing imported GPX and marker layers, and a task to run after they are added to MapView.
diff --git a/src/org/openstreetmap/josm/io/GpxReader.java b/src/org/openstreetmap/josm/io/GpxReader.java
index 45ab7c0..6b04fb0 100644
--- a/src/org/openstreetmap/josm/io/GpxReader.java
+++ b/src/org/openstreetmap/josm/io/GpxReader.java
@@ -66,13 +66,13 @@ public class GpxReader implements GpxConstants {
         private Stack<State> states;
         private final Stack<String> elements = new Stack<>();
 
-        private StringBuffer accumulator = new StringBuffer();
+        private StringBuilder accumulator = new StringBuilder();
 
-        private boolean nokiaSportsTrackerBug = false;
+        private boolean nokiaSportsTrackerBug;
 
         @Override
         public void startDocument() {
-            accumulator = new StringBuffer();
+            accumulator = new StringBuilder();
             states = new Stack<>();
             data = new GpxData();
         }
@@ -177,7 +177,7 @@ public class GpxReader implements GpxConstants {
                     currentLink = new GpxLink(atts.getValue("href"));
                     break;
                 case "email":
-                    data.put(META_AUTHOR_EMAIL, atts.getValue("id") + "@" + atts.getValue("domain"));
+                    data.put(META_AUTHOR_EMAIL, atts.getValue("id") + '@' + atts.getValue("domain"));
                 }
                 break;
             case trk:
@@ -548,7 +548,7 @@ public class GpxReader implements GpxConstants {
                 String message = e.getMessage();
                 if (e instanceof SAXParseException) {
                     SAXParseException spe = (SAXParseException) e;
-                    message += " " + tr("(at line {0}, column {1})", spe.getLineNumber(), spe.getColumnNumber());
+                    message += ' ' + tr("(at line {0}, column {1})", spe.getLineNumber(), spe.getColumnNumber());
                 }
                 Main.warn(message);
                 return false;
diff --git a/src/org/openstreetmap/josm/io/GpxWriter.java b/src/org/openstreetmap/josm/io/GpxWriter.java
index 58750fc..34376d7 100644
--- a/src/org/openstreetmap/josm/io/GpxWriter.java
+++ b/src/org/openstreetmap/josm/io/GpxWriter.java
@@ -134,7 +134,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
             if (attr.containsKey(META_AUTHOR_EMAIL)) {
                 String[] tmp = data.getString(META_AUTHOR_EMAIL).split("@");
                 if (tmp.length == 2) {
-                    inline("email", "id=\"" + tmp[0] + "\" domain=\""+tmp[1]+"\"");
+                    inline("email", "id=\"" + tmp[0] + "\" domain=\""+tmp[1]+'\"');
                 }
             }
             // write the author link
@@ -145,7 +145,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
         // write the copyright details
         if (attr.containsKey(META_COPYRIGHT_LICENSE)
                 || attr.containsKey(META_COPYRIGHT_YEAR)) {
-            openAtt("copyright", "author=\""+ data.get(META_COPYRIGHT_AUTHOR) +"\"");
+            openAtt("copyright", "author=\""+ data.get(META_COPYRIGHT_AUTHOR) +'\"');
             if (attr.containsKey(META_COPYRIGHT_YEAR)) {
                 simpleTag("year", (String) data.get(META_COPYRIGHT_YEAR));
             }
@@ -170,7 +170,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
         Bounds bounds = data.recalculateBounds();
         if (bounds != null) {
             String b = "minlat=\"" + bounds.getMinLat() + "\" minlon=\"" + bounds.getMinLon() +
-            "\" maxlat=\"" + bounds.getMaxLat() + "\" maxlon=\"" + bounds.getMaxLon() + "\"";
+            "\" maxlat=\"" + bounds.getMaxLat() + "\" maxlon=\"" + bounds.getMaxLon() + '\"';
             inline("bounds", b);
         }
 
@@ -221,22 +221,22 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
     }
 
     private void open(String tag) {
-        out.print(indent + "<" + tag + ">");
+        out.print(indent + '<' + tag + '>');
         indent += "  ";
     }
 
     private void openAtt(String tag, String attributes) {
-        out.println(indent + "<" + tag + " " + attributes + ">");
+        out.println(indent + '<' + tag + ' ' + attributes + '>');
         indent += "  ";
     }
 
     private void inline(String tag, String attributes) {
-        out.println(indent + "<" + tag + " " + attributes + "/>");
+        out.println(indent + '<' + tag + ' ' + attributes + "/>");
     }
 
     private void close(String tag) {
         indent = indent.substring(2);
-        out.print(indent + "</" + tag + ">");
+        out.print(indent + "</" + tag + '>');
     }
 
     private void closeln(String tag) {
@@ -252,7 +252,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
         if (content != null && !content.isEmpty()) {
             open(tag);
             out.print(encode(content));
-            out.println("</" + tag + ">");
+            out.println("</" + tag + '>');
             indent = indent.substring(2);
         }
     }
@@ -262,7 +262,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
      */
     private void gpxLink(GpxLink link) {
         if (link != null) {
-            openAtt("link", "href=\"" + link.uri + "\"");
+            openAtt("link", "href=\"" + link.uri + '\"');
             simpleTag("text", link.text);
             simpleTag("type", link.type);
             closeln("link");
@@ -289,7 +289,7 @@ public class GpxWriter extends XmlWriter implements GpxConstants {
         }
         if (pnt != null) {
             LatLon c = pnt.getCoor();
-            String coordAttr = "lat=\"" + c.lat() + "\" lon=\"" + c.lon() + "\"";
+            String coordAttr = "lat=\"" + c.lat() + "\" lon=\"" + c.lon() + '\"';
             if (pnt.attr.isEmpty()) {
                 inline(type, coordAttr);
             } else {
diff --git a/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java b/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
index 8aa4e46..20afb6b 100644
--- a/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
+++ b/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
@@ -21,9 +21,9 @@ public class InvalidXmlCharacterFilter extends Reader {
 
     private Reader reader;
 
-    public static boolean firstWarning = true;
+    private static boolean firstWarning = true;
 
-    public static final boolean[] INVALID_CHARS;
+    private static final boolean[] INVALID_CHARS;
 
     static {
         INVALID_CHARS = new boolean[0x20];
@@ -60,7 +60,7 @@ public class InvalidXmlCharacterFilter extends Reader {
         reader.close();
     }
 
-    private char filter(char in) {
+    private static char filter(char in) {
         if (in < 0x20 && INVALID_CHARS[in]) {
             if (firstWarning) {
                 Main.warn("Invalid xml character encountered: '"+in+"'.");
diff --git a/src/org/openstreetmap/josm/io/JpgImporter.java b/src/org/openstreetmap/josm/io/JpgImporter.java
index b8fd8cf..da67eb0 100644
--- a/src/org/openstreetmap/josm/io/JpgImporter.java
+++ b/src/org/openstreetmap/josm/io/JpgImporter.java
@@ -35,7 +35,7 @@ public class JpgImporter extends FileImporter {
      * @since 5438
      */
     public static final ExtensionFileFilter FILE_FILTER_WITH_FOLDERS = new ExtensionFileFilter(
-            "jpg,jpeg", "jpg", tr("Image Files") + " (*.jpg, "+ tr("folder")+")");
+            "jpg,jpeg", "jpg", tr("Image Files") + " (*.jpg, "+ tr("folder")+')');
 
     /**
      * Constructs a new {@code JpgImporter}.
@@ -87,7 +87,7 @@ public class JpgImporter extends FileImporter {
         }
     }
 
-    private void addRecursiveFiles(List<File> files, Set<String> visitedDirs, List<File> sel, ProgressMonitor progressMonitor)
+    private static void addRecursiveFiles(List<File> files, Set<String> visitedDirs, List<File> sel, ProgressMonitor progressMonitor)
             throws IOException {
 
         if (progressMonitor.isCanceled())
diff --git a/src/org/openstreetmap/josm/io/MessageNotifier.java b/src/org/openstreetmap/josm/io/MessageNotifier.java
index 0b2cfaa..33907a3 100644
--- a/src/org/openstreetmap/josm/io/MessageNotifier.java
+++ b/src/org/openstreetmap/josm/io/MessageNotifier.java
@@ -51,11 +51,11 @@ public final class MessageNotifier {
 
     private static final Runnable WORKER = new Worker();
 
-    private static volatile ScheduledFuture<?> task = null;
+    private static volatile ScheduledFuture<?> task;
 
     private static class Worker implements Runnable {
 
-        private int lastUnreadCount = 0;
+        private int lastUnreadCount;
 
         @Override
         public void run() {
@@ -70,7 +70,7 @@ public final class MessageNotifier {
                             JPanel panel = new JPanel(new GridBagLayout());
                             panel.add(new JLabel(trn("You have {0} unread message.", "You have {0} unread messages.", unread, unread)),
                                     GBC.eol());
-                            panel.add(new UrlLabel(Main.getBaseUserUrl() + "/" + userInfo.getDisplayName() + "/inbox",
+                            panel.add(new UrlLabel(Main.getBaseUserUrl() + '/' + userInfo.getDisplayName() + "/inbox",
                                     tr("Click here to see your inbox.")), GBC.eol());
                             panel.setOpaque(false);
                             new Notification().setContent(panel)
@@ -96,7 +96,7 @@ public final class MessageNotifier {
             Main.info(tr("{0} not available (offline mode)", tr("Message notifier")));
         } else if (!isRunning() && interval > 0 && isUserEnoughIdentified()) {
             task = EXECUTOR.scheduleAtFixedRate(WORKER, 0, interval * 60, TimeUnit.SECONDS);
-            Main.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+")");
+            Main.info("Message notifier active (checks every "+interval+" minute"+(interval > 1 ? "s" : "")+')');
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
index 3e68202..909b32a 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
@@ -13,7 +13,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CompletionService;
@@ -36,7 +35,6 @@ import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -101,30 +99,6 @@ public class MultiFetchServerObjectReader extends OsmServerReader{
     }
 
     /**
-     * remembers an {@link OsmPrimitive}'s id. <code>ds</code> must include
-     * an {@link OsmPrimitive} with id=<code>id</code>. The id will
-     * later we fetched as part of a Multi Get request.
-     *
-     * Ignore the id if it id <= 0.
-     *
-     * @param ds  the dataset (must not be null)
-     * @param id  the primitive id
-     * @param type The primitive type. Must be one of {@link OsmPrimitiveType#NODE NODE}, {@link OsmPrimitiveType#WAY WAY},
-     * {@link OsmPrimitiveType#RELATION RELATION}
-     * @throws IllegalArgumentException if ds is null
-     * @throws NoSuchElementException if ds does not include an {@link OsmPrimitive} with id=<code>id</code>
-     */
-    protected void remember(DataSet ds, long id, OsmPrimitiveType type) throws NoSuchElementException {
-        CheckParameterUtil.ensureParameterNotNull(ds, "ds");
-        if (id <= 0) return;
-        OsmPrimitive primitive = ds.getPrimitiveById(id, type);
-        if (primitive == null)
-            throw new NoSuchElementException(tr("No primitive with id {0} in local dataset. Cannot infer primitive type.", id));
-        remember(primitive.getPrimitiveId());
-        return;
-    }
-
-    /**
      * appends a {@link OsmPrimitive} id to the list of ids which will be fetched from the server.
      *
      * @param ds the {@link DataSet} to which the primitive belongs
@@ -350,7 +324,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader{
         }
         // Run the fetchers
         for (int i = 0; i < jobs.size() && !isCanceled(); i++) {
-            progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + "/" + progressMonitor.getTicksCount());
+            progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + '/' + progressMonitor.getTicksCount());
             try {
                 FetchResult result = ecs.take().get();
                 if (result.missingPrimitives != null) {
diff --git a/src/org/openstreetmap/josm/io/NMEAImporter.java b/src/org/openstreetmap/josm/io/NMEAImporter.java
index f3b762f..5793aed 100644
--- a/src/org/openstreetmap/josm/io/NMEAImporter.java
+++ b/src/org/openstreetmap/josm/io/NMEAImporter.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.io;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -30,8 +29,8 @@ public class NMEAImporter extends FileImporter {
     /**
      * The NMEA file filter (*.nmea *.nme *.nma *.log *.txt files).
      */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "nmea,nme,nma,log,txt", "nmea", tr("NMEA-0183 Files") + " (*.nmea *.nme *.nma *.log *.txt)");
+    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "nmea,nme,nma,log,txt", "nmea", tr("NMEA-0183 Files"), false);
 
     /**
      * Constructs a new {@code NMEAImporter}.
@@ -43,7 +42,7 @@ public class NMEAImporter extends FileImporter {
     @Override
     public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
         final String fn = file.getName();
-        try (InputStream fis = new FileInputStream(file)) {
+        try (InputStream fis = Compression.getUncompressedFileInputStream(file)) {
             final NmeaReader r = new NmeaReader(fis);
             if (r.getNumberOfCoordinates() > 0) {
                 r.data.storageFile = file;
diff --git a/src/org/openstreetmap/josm/io/NmeaReader.java b/src/org/openstreetmap/josm/io/NmeaReader.java
index afa9895..30d0f5c 100644
--- a/src/org/openstreetmap/josm/io/NmeaReader.java
+++ b/src/org/openstreetmap/josm/io/NmeaReader.java
@@ -30,7 +30,7 @@ import org.openstreetmap.josm.tools.date.DateUtils;
 public class NmeaReader {
 
     /** Handler for the different types that NMEA speaks. */
-    public static enum NMEA_TYPE {
+    public enum NMEA_TYPE {
 
         /** RMC = recommended minimum sentence C. */
         GPRMC("$GPRMC"),
@@ -57,7 +57,7 @@ public class NmeaReader {
     }
 
     // GPVTG
-    public static enum GPVTG {
+    public enum GPVTG {
         COURSE(1), COURSE_REF(2), // true course
         COURSE_M(3), COURSE_M_REF(4), // magnetic course
         SPEED_KN(5), SPEED_KN_UNIT(6), // speed in knots
@@ -72,7 +72,7 @@ public class NmeaReader {
     }
 
     // The following only applies to GPRMC
-    public static enum GPRMC {
+    public enum GPRMC {
         TIME(1),
         /** Warning from the receiver (A = data ok, V = warning) */
         RECEIVER_WARNING(2),
@@ -96,7 +96,7 @@ public class NmeaReader {
     }
 
     // The following only applies to GPGGA
-    public static enum GPGGA {
+    public enum GPGGA {
         TIME(1), LATITUDE(2), LATITUDE_NAME(3), LONGITUDE(4), LONGITUDE_NAME(5),
         /**
          * Quality (0 = invalid, 1 = GPS, 2 = DGPS, 6 = estimanted (@since NMEA
@@ -115,7 +115,7 @@ public class NmeaReader {
         }
     }
 
-    public static enum GPGSA {
+    public enum GPGSA {
         AUTOMATIC(1),
         FIX_TYPE(2), // 1 = not fixed, 2 = 2D fixed, 3 = 3D fixed)
         // PRN numbers for max 12 satellites
@@ -216,12 +216,12 @@ public class NmeaReader {
         protected String pDate;
         protected WayPoint pWp;
 
-        protected int success = 0; // number of successfully parsed sentences
-        protected int malformed = 0;
-        protected int checksumErrors = 0;
-        protected int noChecksum = 0;
-        protected int unknown = 0;
-        protected int zeroCoord = 0;
+        protected int success; // number of successfully parsed sentences
+        protected int malformed;
+        protected int checksumErrors;
+        protected int noChecksum;
+        protected int unknown;
+        protected int zeroCoord;
     }
 
     // Parses split up sentences into WayPoints which are stored
@@ -447,7 +447,7 @@ public class NmeaReader {
         }
     }
 
-    private LatLon parseLatLon(String ns, String ew, String dlat, String dlon)
+    private static LatLon parseLatLon(String ns, String ew, String dlat, String dlon)
     throws NumberFormatException {
         String widthNorth = dlat.trim();
         String lengthEast = dlon.trim();
diff --git a/src/org/openstreetmap/josm/io/NoteImporter.java b/src/org/openstreetmap/josm/io/NoteImporter.java
index 4f190d3..a69918c 100644
--- a/src/org/openstreetmap/josm/io/NoteImporter.java
+++ b/src/org/openstreetmap/josm/io/NoteImporter.java
@@ -17,13 +17,13 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.xml.sax.SAXException;
 
 /**
- * File importer that reads note dump files (*.osn and .osn.bz2)
+ * File importer that reads note dump files (*.osn, .osn.gz and .osn.bz2)
  * @since 7538
  */
 public class NoteImporter extends FileImporter {
 
-    private static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osn,osn.bz2", "osn", tr("Note Files") + " (*.osn *.osn.bz2)");
+    private static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "osn", "osn", tr("Note Files"), true);
 
     /** Create an importer for note dump files */
     public NoteImporter() {
diff --git a/src/org/openstreetmap/josm/io/NoteReader.java b/src/org/openstreetmap/josm/io/NoteReader.java
index e54baa5..1be31fd 100644
--- a/src/org/openstreetmap/josm/io/NoteReader.java
+++ b/src/org/openstreetmap/josm/io/NoteReader.java
@@ -48,7 +48,7 @@ public class NoteReader {
     private class Parser extends DefaultHandler {
 
         private NoteParseMode parseMode;
-        private StringBuffer buffer = new StringBuffer();
+        private StringBuilder buffer = new StringBuilder();
         private Note thisNote;
         private long commentUid;
         private String commentUsername;
diff --git a/src/org/openstreetmap/josm/io/OsmApi.java b/src/org/openstreetmap/josm/io/OsmApi.java
index b46ac87..fb59ee9 100644
--- a/src/org/openstreetmap/josm/io/OsmApi.java
+++ b/src/org/openstreetmap/josm/io/OsmApi.java
@@ -80,7 +80,7 @@ public class OsmApi extends OsmConnection {
     // The collection of instantiated OSM APIs
     private static Map<String, OsmApi> instances = new HashMap<>();
 
-    private URL url = null;
+    private URL url;
 
     /**
      * Replies the {@link OsmApi} for a given server URL
@@ -119,13 +119,13 @@ public class OsmApi extends OsmConnection {
     private Changeset changeset;
 
     /** API version used for server communications */
-    private String version = null;
+    private String version;
 
     /** API capabilities */
-    private Capabilities capabilities = null;
+    private Capabilities capabilities;
 
     /** true if successfully initialized */
-    private boolean initialized = false;
+    private boolean initialized;
 
     /**
      * Constructs a new {@code OsmApi} for a specific server URL.
@@ -167,7 +167,7 @@ public class OsmApi extends OsmConnection {
         private ProgressMonitor monitor;
         private boolean fastFail;
 
-        public CapabilitiesCache(ProgressMonitor monitor, boolean fastFail) {
+        CapabilitiesCache(ProgressMonitor monitor, boolean fastFail) {
             super(CAPABILITIES + getBaseUrl().hashCode(), CacheCustomContent.INTERVAL_WEEKLY);
             this.monitor = monitor;
             this.fastFail = fastFail;
@@ -377,7 +377,7 @@ public class OsmApi extends OsmConnection {
             ensureValidChangeset();
             initialize(monitor);
             // normal mode (0.6 and up) returns new object version.
-            ret = sendRequest("PUT", OsmPrimitiveType.from(osm).getAPIName()+"/" + osm.getId(), toXml(osm, true), monitor);
+            ret = sendRequest("PUT", OsmPrimitiveType.from(osm).getAPIName()+'/' + osm.getId(), toXml(osm, true), monitor);
             osm.setOsmId(osm.getId(), Integer.parseInt(ret.trim()));
             osm.setChangesetId(getChangeset().getId());
             osm.setVisible(true);
@@ -622,7 +622,7 @@ public class OsmApi extends OsmConnection {
         while (true) { // the retry loop
             try {
                 url = new URL(new URL(getBaseUrl()), urlSuffix);
-                Main.info(requestMethod + " " + url + "... ");
+                Main.info(requestMethod + ' ' + url + "... ");
                 Main.debug(requestBody);
                 // fix #5369, see http://www.tikalk.com/java/forums/httpurlconnection-disable-keep-alive
                 activeConnection = Utils.openHttpConnection(url, false);
@@ -876,7 +876,12 @@ public class OsmApi extends OsmConnection {
         return parseSingleNote(response);
     }
 
-    /** Method for parsing API responses for operations on individual notes */
+    /**
+     * Method for parsing API responses for operations on individual notes
+     * @param xml the API response as XML data
+     * @return the resulting Note
+     * @throws OsmTransferException if the API response cannot be parsed
+     */
     private Note parseSingleNote(String xml) throws OsmTransferException {
         try {
             List<Note> newNotes = new NoteReader(xml).parse();
diff --git a/src/org/openstreetmap/josm/io/OsmChangeBuilder.java b/src/org/openstreetmap/josm/io/OsmChangeBuilder.java
index 34b1590..8eb2cb0 100644
--- a/src/org/openstreetmap/josm/io/OsmChangeBuilder.java
+++ b/src/org/openstreetmap/josm/io/OsmChangeBuilder.java
@@ -24,7 +24,7 @@ public class OsmChangeBuilder {
     private StringWriter swriter;
     private OsmWriter osmwriter;
     private String apiVersion = DEFAULT_API_VERSION;
-    private boolean prologWritten = false;
+    private boolean prologWritten;
 
     public OsmChangeBuilder(Changeset changeset) {
         this(changeset, null /* default api version */);
diff --git a/src/org/openstreetmap/josm/io/OsmChangeImporter.java b/src/org/openstreetmap/josm/io/OsmChangeImporter.java
index e7d04c7..1e24835 100644
--- a/src/org/openstreetmap/josm/io/OsmChangeImporter.java
+++ b/src/org/openstreetmap/josm/io/OsmChangeImporter.java
@@ -14,14 +14,13 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
 public class OsmChangeImporter extends FileImporter {
 
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osc,osc.bz2,osc.bz,osc.gz", "osc", tr("OsmChange File") + " (*.osc *.osc.bz2 *.osc.bz *.osc.gz)");
+    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "osc", "osc", tr("OsmChange File"), true);
 
     /**
      * Constructs a new {@code OsmChangeImporter}.
@@ -44,10 +43,6 @@ public class OsmChangeImporter extends FileImporter {
         }
     }
 
-    protected void importData(InputStream in, final File associatedFile) throws IllegalDataException {
-        importData(in, associatedFile, NullProgressMonitor.INSTANCE);
-    }
-
     protected void importData(InputStream in, final File associatedFile, ProgressMonitor  progressMonitor) throws IllegalDataException {
         final DataSet dataSet = OsmChangeReader.parseDataSet(in, progressMonitor);
         final OsmDataLayer layer = new OsmDataLayer(dataSet, associatedFile.getName(), associatedFile);
diff --git a/src/org/openstreetmap/josm/io/OsmChangesetParser.java b/src/org/openstreetmap/josm/io/OsmChangesetParser.java
index a343f91..8959b66 100644
--- a/src/org/openstreetmap/josm/io/OsmChangesetParser.java
+++ b/src/org/openstreetmap/josm/io/OsmChangesetParser.java
@@ -70,15 +70,15 @@ public final class OsmChangesetParser {
         }
 
         /** The current changeset */
-        private Changeset current = null;
+        private Changeset current;
 
         /** The current comment */
-        private ChangesetDiscussionComment comment = null;
+        private ChangesetDiscussionComment comment;
 
         /** The current comment text */
-        private StringBuilder text = null;
+        private StringBuilder text;
 
-        protected void parseChangesetAttributes(Changeset cs, Attributes atts) throws XmlParsingException {
+        protected void parseChangesetAttributes(Attributes atts) throws XmlParsingException {
             // -- id
             String value = atts.getValue("id");
             if (value == null) {
@@ -203,7 +203,7 @@ public final class OsmChangesetParser {
                 break;
             case "changeset":
                 current = new Changeset();
-                parseChangesetAttributes(current, atts);
+                parseChangesetAttributes(atts);
                 break;
             case "tag":
                 String key = atts.getValue("k");
diff --git a/src/org/openstreetmap/josm/io/OsmConnection.java b/src/org/openstreetmap/josm/io/OsmConnection.java
index 75ecc52..51bd6e8 100644
--- a/src/org/openstreetmap/josm/io/OsmConnection.java
+++ b/src/org/openstreetmap/josm/io/OsmConnection.java
@@ -11,9 +11,6 @@ import java.nio.charset.CharacterCodingException;
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.StandardCharsets;
 
-import oauth.signpost.OAuthConsumer;
-import oauth.signpost.exception.OAuthException;
-
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
 import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
@@ -22,6 +19,9 @@ import org.openstreetmap.josm.io.auth.CredentialsAgentResponse;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.Base64;
 
+import oauth.signpost.OAuthConsumer;
+import oauth.signpost.exception.OAuthException;
+
 /**
  * Base class that handles common things like authentication for the reader and writer
  * to the osm server.
@@ -29,7 +29,7 @@ import org.openstreetmap.josm.tools.Base64;
  * @author imi
  */
 public class OsmConnection {
-    protected boolean cancel = false;
+    protected boolean cancel;
     protected HttpURLConnection activeConnection;
     protected OAuthParameters oauthParameters;
 
@@ -94,7 +94,7 @@ public class OsmConnection {
         } else {
             String username = response.getUsername() == null ? "" : response.getUsername();
             String password = response.getPassword() == null ? "" : String.valueOf(response.getPassword());
-            token = username + ":" + password;
+            token = username + ':' + password;
             try {
                 ByteBuffer bytes = encoder.encode(CharBuffer.wrap(token));
                 con.addRequestProperty("Authorization", "Basic "+Base64.encode(bytes));
diff --git a/src/org/openstreetmap/josm/io/OsmExporter.java b/src/org/openstreetmap/josm/io/OsmExporter.java
index d028415..7b03f61 100644
--- a/src/org/openstreetmap/josm/io/OsmExporter.java
+++ b/src/org/openstreetmap/josm/io/OsmExporter.java
@@ -85,7 +85,7 @@ public class OsmExporter extends FileExporter {
             // process of writing the file, we might just end up with
             // a truncated file.  That can destroy lots of work.
             if (file.exists()) {
-                tmpFile = new File(file.getPath() + "~");
+                tmpFile = new File(file.getPath() + '~');
                 Utils.copyFile(file, tmpFile);
             }
 
diff --git a/src/org/openstreetmap/josm/io/OsmHistoryReader.java b/src/org/openstreetmap/josm/io/OsmHistoryReader.java
index b51238e..545cc2e 100644
--- a/src/org/openstreetmap/josm/io/OsmHistoryReader.java
+++ b/src/org/openstreetmap/josm/io/OsmHistoryReader.java
@@ -39,7 +39,7 @@ public class OsmHistoryReader {
         protected String getCurrentPosition() {
             if (locator == null)
                 return "";
-            return "(" + locator.getLineNumber() + "," + locator.getColumnNumber() + ")";
+            return "(" + locator.getLineNumber() + ',' + locator.getColumnNumber() + ')';
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/io/OsmImporter.java b/src/org/openstreetmap/josm/io/OsmImporter.java
index 9909447..fa54c0b 100644
--- a/src/org/openstreetmap/josm/io/OsmImporter.java
+++ b/src/org/openstreetmap/josm/io/OsmImporter.java
@@ -15,7 +15,6 @@ import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
@@ -82,17 +81,9 @@ public class OsmImporter extends FileImporter {
     /**
      * Imports OSM data from stream
      * @param in input stream
-     * @param associatedFile filename of data
-     */
-    protected void importData(InputStream in, final File associatedFile) throws IllegalDataException {
-        importData(in, associatedFile, NullProgressMonitor.INSTANCE);
-    }
-
-    /**
-     * Imports OSM data from stream
-     * @param in input stream
      * @param associatedFile filename of data (layer name will be generated from name of file)
      * @param pm handler for progress monitoring and canceling
+     * @throws IllegalDataException if an error was found while parsing the OSM data
      */
     protected void importData(InputStream in, final File associatedFile, ProgressMonitor pm) throws IllegalDataException {
         final OsmImporterData data = loadLayer(in, associatedFile,
@@ -121,6 +112,8 @@ public class OsmImporter extends FileImporter {
      * @param associatedFile filename of data (can be <code>null</code> if the stream does not come from a file)
      * @param layerName name of generated layer
      * @param progressMonitor handler for progress monitoring and canceling
+     * @return Utility class containing imported OSM layer, and a task to run after it is added to MapView
+     * @throws IllegalDataException if an error was found while parsing the OSM data
      */
     public OsmImporterData loadLayer(InputStream in, final File associatedFile, final String layerName, ProgressMonitor progressMonitor)
             throws IllegalDataException {
diff --git a/src/org/openstreetmap/josm/io/OsmReader.java b/src/org/openstreetmap/josm/io/OsmReader.java
index e37449a..e3457bc 100644
--- a/src/org/openstreetmap/josm/io/OsmReader.java
+++ b/src/org/openstreetmap/josm/io/OsmReader.java
@@ -397,6 +397,7 @@ public class OsmReader extends AbstractReader {
      *
      * This is basically the same code as parseUnknown(), except for the warnings, which
      * are displayed for inner elements and not at top level.
+     * @throws XMLStreamException if there is an error processing the underlying XML source
      */
     private void jumpToEnd(boolean printWarning) throws XMLStreamException {
         while (true) {
@@ -429,6 +430,7 @@ public class OsmReader extends AbstractReader {
 
     /**
      * Read out the common attributes and put them into current OsmPrimitive.
+     * @throws XMLStreamException if there is an error processing the underlying XML source
      */
     private void readCommon(PrimitiveData current) throws XMLStreamException {
         current.setId(getLong("id"));
@@ -543,12 +545,12 @@ public class OsmReader extends AbstractReader {
 
     private static class OsmParsingException extends XMLStreamException {
 
-        public OsmParsingException(String msg, Location location) {
+        OsmParsingException(String msg, Location location) {
             super(msg); /* cannot use super(msg, location) because it messes with the message preventing localization */
             this.location = location;
         }
 
-        public OsmParsingException(String msg, Location location, Throwable th) {
+        OsmParsingException(String msg, Location location, Throwable th) {
             super(msg, th);
             this.location = location;
         }
@@ -561,7 +563,7 @@ public class OsmReader extends AbstractReader {
             }
             if (getLocation() == null)
                 return msg;
-            msg += " " + tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber());
+            msg += ' ' + tr("(at line {0}, column {1})", getLocation().getLineNumber(), getLocation().getColumnNumber());
             int offset = getLocation().getCharacterOffset();
             if (offset > -1) {
                 msg += ". "+ tr("{0} bytes have been read", offset);
@@ -579,7 +581,7 @@ public class OsmReader extends AbstractReader {
          * @param msg The error message
          * @param location The parser location
          */
-        public OsmParsingCanceledException(String msg, Location location) {
+        OsmParsingCanceledException(String msg, Location location) {
             super(msg, location);
         }
     }
diff --git a/src/org/openstreetmap/josm/io/OsmServerLocationReader.java b/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
index 98be7bf..8d494d7 100644
--- a/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
+++ b/src/org/openstreetmap/josm/io/OsmServerLocationReader.java
@@ -35,7 +35,7 @@ public class OsmServerLocationReader extends OsmServerReader {
     protected abstract class Parser<T> {
         protected final ProgressMonitor progressMonitor;
         protected final Compression compression;
-        protected InputStream in = null;
+        protected InputStream in;
 
         public Parser(ProgressMonitor progressMonitor, Compression compression) {
             this.progressMonitor = progressMonitor;
diff --git a/src/org/openstreetmap/josm/io/OsmServerReader.java b/src/org/openstreetmap/josm/io/OsmServerReader.java
index 6f74c4c..818d0f9 100644
--- a/src/org/openstreetmap/josm/io/OsmServerReader.java
+++ b/src/org/openstreetmap/josm/io/OsmServerReader.java
@@ -35,7 +35,7 @@ import org.openstreetmap.josm.tools.Utils;
  */
 public abstract class OsmServerReader extends OsmConnection {
     private OsmApi api = OsmApi.getOsmApi();
-    private boolean doAuthenticate = false;
+    private boolean doAuthenticate;
     protected boolean gpxParsedProperly;
 
     /**
@@ -151,7 +151,7 @@ public abstract class OsmServerReader extends OsmConnection {
 
             try {
                 if (reason != null && !reason.isEmpty()) {
-                    Main.info("GET " + url + " (" + reason + ")");
+                    Main.info("GET " + url + " (" + reason + ')');
                 } else {
                     Main.info("GET " + url);
                 }
@@ -209,7 +209,7 @@ public abstract class OsmServerReader extends OsmConnection {
         }
     }
 
-    private InputStream fixEncoding(InputStream stream, String encoding) throws IOException {
+    private static InputStream fixEncoding(InputStream stream, String encoding) throws IOException {
         if ("gzip".equalsIgnoreCase(encoding)) {
             stream = new GZIPInputStream(stream);
         } else if ("deflate".equalsIgnoreCase(encoding)) {
diff --git a/src/org/openstreetmap/josm/io/OsmServerWriter.java b/src/org/openstreetmap/josm/io/OsmServerWriter.java
index 7c5f2db..5bf18af 100644
--- a/src/org/openstreetmap/josm/io/OsmServerWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmServerWriter.java
@@ -51,7 +51,7 @@ public class OsmServerWriter {
     }
 
     private OsmApi api = OsmApi.getOsmApi();
-    private boolean canceled = false;
+    private boolean canceled;
 
     private static final int MSECS_PER_SECOND = 1000;
     private static final int SECONDS_PER_MINUTE = 60;
@@ -70,11 +70,11 @@ public class OsmServerWriter {
         long ms_left = (long) (uploads_left / uploads_per_ms);
         long minutes_left = ms_left / MSECS_PER_MINUTE;
         long seconds_left = (ms_left / MSECS_PER_SECOND) % SECONDS_PER_MINUTE;
-        String time_left_str = Long.toString(minutes_left) + ":";
+        StringBuilder time_left_str = new StringBuilder().append(minutes_left).append(':');
         if (seconds_left < 10) {
-            time_left_str += "0";
+            time_left_str.append('0');
         }
-        return time_left_str + Long.toString(seconds_left);
+        return time_left_str.append(seconds_left).toString();
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/io/OsmWriter.java b/src/org/openstreetmap/josm/io/OsmWriter.java
index f5e598c..0df5f77 100644
--- a/src/org/openstreetmap/josm/io/OsmWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmWriter.java
@@ -184,7 +184,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
         } else {
             if (n.getCoor() != null) {
                 out.print(" lat='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lat())+
-                          "' lon='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lon())+"'");
+                          "' lon='"+LatLon.cDdHighPecisionFormatter.format(n.getCoor().lon())+'\'');
             }
             addTags(n, "node", true);
         }
@@ -225,25 +225,25 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
 
     public void visit(Changeset cs) {
         out.print("  <changeset ");
-        out.print(" id='"+cs.getId()+"'");
+        out.print(" id='"+cs.getId()+'\'');
         if (cs.getUser() != null) {
-            out.print(" user='"+cs.getUser().getName() +"'");
-            out.print(" uid='"+cs.getUser().getId() +"'");
+            out.print(" user='"+cs.getUser().getName() +'\'');
+            out.print(" uid='"+cs.getUser().getId() +'\'');
         }
         if (cs.getCreatedAt() != null) {
-            out.print(" created_at='"+DateUtils.fromDate(cs.getCreatedAt()) +"'");
+            out.print(" created_at='"+DateUtils.fromDate(cs.getCreatedAt()) +'\'');
         }
         if (cs.getClosedAt() != null) {
-            out.print(" closed_at='"+DateUtils.fromDate(cs.getClosedAt()) +"'");
+            out.print(" closed_at='"+DateUtils.fromDate(cs.getClosedAt()) +'\'');
         }
-        out.print(" open='"+ (cs.isOpen() ? "true" : "false") +"'");
+        out.print(" open='"+ (cs.isOpen() ? "true" : "false") +'\'');
         if (cs.getMin() != null) {
-            out.print(" min_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
-            out.print(" min_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
+            out.print(" min_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
+            out.print(" min_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
         }
         if (cs.getMax() != null) {
-            out.print(" max_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
-            out.print(" max_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +"'");
+            out.print(" max_lon='"+ cs.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
+            out.print(" max_lat='"+ cs.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES) +'\'');
         }
         out.println(">");
         addTags(cs, "changeset", false); // also writes closing </changeset>
@@ -267,11 +267,11 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
                 out.println("    <tag k='"+ XmlWriter.encode(e.getKey()) +
                         "' v='"+XmlWriter.encode(e.getValue())+ "' />");
             }
-            out.println("  </" + tagname + ">");
+            out.println("  </" + tagname + '>');
         } else if (tagOpen) {
             out.println(" />");
         } else {
-            out.println("  </" + tagname + ">");
+            out.println("  </" + tagname + '>');
         }
     }
 
@@ -282,7 +282,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
     protected void addCommon(IPrimitive osm, String tagname) {
         out.print("  <"+tagname);
         if (osm.getUniqueId() != 0) {
-            out.print(" id='"+ osm.getUniqueId()+"'");
+            out.print(" id='"+ osm.getUniqueId()+'\'');
         } else
             throw new IllegalStateException(tr("Unexpected id 0 for osm primitive found"));
         if (!isOsmChange) {
@@ -294,31 +294,31 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
                     action = "modify";
                 }
                 if (action != null) {
-                    out.print(" action='"+action+"'");
+                    out.print(" action='"+action+'\'');
                 }
             }
             if (!osm.isTimestampEmpty()) {
-                out.print(" timestamp='"+DateUtils.fromTimestamp(osm.getRawTimestamp())+"'");
+                out.print(" timestamp='"+DateUtils.fromTimestamp(osm.getRawTimestamp())+'\'');
             }
             // user and visible added with 0.4 API
             if (osm.getUser() != null) {
                 if (osm.getUser().isLocalUser()) {
-                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
+                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+'\'');
                 } else if (osm.getUser().isOsmUser()) {
                     // uid added with 0.6
-                    out.print(" uid='"+ osm.getUser().getId()+"'");
-                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
+                    out.print(" uid='"+ osm.getUser().getId()+'\'');
+                    out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+'\'');
                 }
             }
-            out.print(" visible='"+osm.isVisible()+"'");
+            out.print(" visible='"+osm.isVisible()+'\'');
         }
         if (osm.getVersion() != 0) {
-            out.print(" version='"+osm.getVersion()+"'");
+            out.print(" version='"+osm.getVersion()+'\'');
         }
         if (this.changeset != null && this.changeset.getId() != 0) {
-            out.print(" changeset='"+this.changeset.getId()+"'");
+            out.print(" changeset='"+this.changeset.getId()+'\'');
         } else if (osm.getChangesetId() > 0 && !osm.isNew()) {
-            out.print(" changeset='"+osm.getChangesetId()+"'");
+            out.print(" changeset='"+osm.getChangesetId()+'\'');
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/io/OverpassDownloadReader.java b/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
index 3812e08..7c9505e 100644
--- a/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
+++ b/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
@@ -49,12 +49,12 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
         else {
             String realQuery = completeOverpassQuery(overpassQuery);
             return "interpreter?data=" + Utils.encodeUrl(realQuery)
-                    + "&bbox=" + lon1 + "," + lat1 + "," + lon2 + "," + lat2;
+                    + "&bbox=" + lon1 + ',' + lat1 + ',' + lon2 + ',' + lat2;
         }
     }
 
-    private String completeOverpassQuery(String query) {
-        int firstColon = query.indexOf(";");
+    private static String completeOverpassQuery(String query) {
+        int firstColon = query.indexOf(';');
         if (firstColon == -1) {
             return "[bbox];" + query;
         }
@@ -68,7 +68,7 @@ public class OverpassDownloadReader extends BoundingBoxDownloader {
         for (; pos < firstColon; ++pos) {
             if (query.charAt(pos) == '[')
                 ++bracketCount;
-            else if (query.charAt(pos) == '[')
+            else if (query.charAt(pos) == ']')
                 --bracketCount;
             else if (bracketCount == 0) {
                 if (!Character.isWhitespace(query.charAt(pos)))
diff --git a/src/org/openstreetmap/josm/io/ProgressInputStream.java b/src/org/openstreetmap/josm/io/ProgressInputStream.java
index 9cae718..3a9d14b 100644
--- a/src/org/openstreetmap/josm/io/ProgressInputStream.java
+++ b/src/org/openstreetmap/josm/io/ProgressInputStream.java
@@ -17,8 +17,8 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 public class ProgressInputStream extends InputStream {
 
     private final InputStream in;
-    private int readSoFar = 0;
-    private int lastDialogUpdate = 0;
+    private int readSoFar;
+    private int lastDialogUpdate;
     private boolean sizeKnown;
     private final URLConnection connection;
     private final ProgressMonitor progressMonitor;
diff --git a/src/org/openstreetmap/josm/io/UTFInputStreamReader.java b/src/org/openstreetmap/josm/io/UTFInputStreamReader.java
index 6473176..87b45dd 100644
--- a/src/org/openstreetmap/josm/io/UTFInputStreamReader.java
+++ b/src/org/openstreetmap/josm/io/UTFInputStreamReader.java
@@ -15,6 +15,7 @@ public final class UTFInputStreamReader extends InputStreamReader {
     /**
      * Creates a new {@link InputStreamReader} from the {@link InputStream} with UTF-8 as default encoding.
      * @return A reader with the correct encoding. Starts to read after the BOM.
+     * @throws IOException if any I/O error occurs
      * @see #create(java.io.InputStream, String)
      */
     public static UTFInputStreamReader create(InputStream input) throws IOException {
@@ -25,6 +26,7 @@ public final class UTFInputStreamReader extends InputStreamReader {
      * Creates a new {@link InputStreamReader} from the {@link InputStream}.
      * @param defaultEncoding Used, when no BOM was recognized. Can be null.
      * @return A reader with the correct encoding. Starts to read after the BOM.
+     * @throws IOException if any I/O error occurs
      */
     public static UTFInputStreamReader create(InputStream input, String defaultEncoding) throws IOException {
         byte[] bom = new byte[4];
diff --git a/src/org/openstreetmap/josm/io/XmlWriter.java b/src/org/openstreetmap/josm/io/XmlWriter.java
index 033cf9e..1ac2ffe 100644
--- a/src/org/openstreetmap/josm/io/XmlWriter.java
+++ b/src/org/openstreetmap/josm/io/XmlWriter.java
@@ -42,6 +42,7 @@ public class XmlWriter implements Closeable {
      * a Java bug that renders
      *     new JLabel("<html>&apos;</html>")
      * literally as 6 character string, see #7558)
+     * @return XML1.0 string
      */
     public static String encode(String unencoded, boolean keepApos) {
         StringBuilder buffer = null;
diff --git a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
index 1dc676f..d6c7d92 100644
--- a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
+++ b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
@@ -95,6 +95,7 @@ public abstract class AbstractCredentialsAgent implements CredentialsAgent {
     /**
      * Provide the text for a checkbox that offers to save the
      * username and password that has been entered by the user.
+     * @return checkbox text
      */
     public abstract String getSaveUsernameAndPasswordCheckboxText();
 }
diff --git a/src/org/openstreetmap/josm/io/auth/CredentialsAgent.java b/src/org/openstreetmap/josm/io/auth/CredentialsAgent.java
index 57c5eb5..cd3e1ea 100644
--- a/src/org/openstreetmap/josm/io/auth/CredentialsAgent.java
+++ b/src/org/openstreetmap/josm/io/auth/CredentialsAgent.java
@@ -43,14 +43,14 @@ public interface CredentialsAgent {
     void store(RequestorType requestorType, String host, PasswordAuthentication credentials) throws CredentialsAgentException;
 
     /**
-     *
+     * Returns the credentials needed to to access host.
      * @param requestorType the type of service. {@link RequestorType#SERVER} for the OSM API server, {@link RequestorType#PROXY}
      * for a proxy server
      * @param host the hostname for these credentials
      * @param noSuccessWithLastResponse true, if the last request with the supplied credentials failed; false otherwise.
      * If true, implementations of this interface are advised to prompt the user for new credentials.
+     * @return the credentials
      * @throws CredentialsAgentException if a problem occurs in a implementation of this interface
-
      */
     CredentialsAgentResponse getCredentials(RequestorType requestorType, String host, boolean noSuccessWithLastResponse)
             throws CredentialsAgentException;
@@ -72,11 +72,10 @@ public interface CredentialsAgent {
      */
     void storeOAuthAccessToken(OAuthToken accessToken) throws CredentialsAgentException;
 
-
     /**
      * Provide a Panel that is shown below the API password / username fields
      * in the JOSM Preferences. (E.g. a warning that password is saved unencrypted.)
+     * @return Panel
      */
     Component getPreferencesDecorationPanel();
-
 }
diff --git a/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java b/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
index 7a22926..cc75cd7 100644
--- a/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
+++ b/src/org/openstreetmap/josm/io/auth/DefaultAuthenticator.java
@@ -54,7 +54,7 @@ public final class DefaultAuthenticator extends Authenticator {
             CredentialsAgentResponse response = CredentialsManager.getInstance().getCredentials(getRequestorType(), getRequestingHost(), tried);
             if (response == null || response.isCanceled())
                 return null;
-            credentialsTried.put(getRequestorType(), true);
+            credentialsTried.put(getRequestorType(), Boolean.TRUE);
             return new PasswordAuthentication(response.getUsername(), response.getPassword());
         } catch (CredentialsAgentException e) {
             Main.error(e);
diff --git a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
index 0bad592..c7ef645 100644
--- a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
+++ b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
@@ -69,7 +69,7 @@ public class ImageryReader {
     }
 
     private static class Parser extends DefaultHandler {
-        private StringBuffer accumulator = new StringBuffer();
+        private StringBuilder accumulator = new StringBuilder();
 
         private Stack<State> states;
 
@@ -92,7 +92,7 @@ public class ImageryReader {
 
         @Override
         public void startDocument() {
-            accumulator = new StringBuffer();
+            accumulator = new StringBuilder();
             skipEntry = false;
             states = new Stack<>();
             states.push(State.INIT);
@@ -148,9 +148,9 @@ public class ImageryReader {
                 } else if ("bounds".equals(qName)) {
                     try {
                         bounds = new ImageryBounds(
-                                atts.getValue("min-lat") + "," +
-                                        atts.getValue("min-lon") + "," +
-                                        atts.getValue("max-lat") + "," +
+                                atts.getValue("min-lat") + ',' +
+                                        atts.getValue("min-lon") + ',' +
+                                        atts.getValue("max-lat") + ',' +
                                         atts.getValue("max-lon"), ",");
                     } catch (IllegalArgumentException e) {
                         break;
diff --git a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
index 4108765..e1a6755 100644
--- a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
+++ b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
@@ -120,9 +120,9 @@ public class WMSImagery {
                 getCapabilitiesUrl = new URL(serviceUrlStr);
                 final String getCapabilitiesQuery = "VERSION=1.1.1&SERVICE=WMS&REQUEST=GetCapabilities";
                 if (getCapabilitiesUrl.getQuery() == null) {
-                    getCapabilitiesUrl = new URL(serviceUrlStr + "?" + getCapabilitiesQuery);
+                    getCapabilitiesUrl = new URL(serviceUrlStr + '?' + getCapabilitiesQuery);
                 } else if (!getCapabilitiesUrl.getQuery().isEmpty() && !getCapabilitiesUrl.getQuery().endsWith("&")) {
-                    getCapabilitiesUrl = new URL(serviceUrlStr + "&" + getCapabilitiesQuery);
+                    getCapabilitiesUrl = new URL(serviceUrlStr + '&' + getCapabilitiesQuery);
                 } else {
                     getCapabilitiesUrl = new URL(serviceUrlStr + getCapabilitiesQuery);
                 }
@@ -302,7 +302,7 @@ public class WMSImagery {
         return new LayerDetails(name, ident, crsList, josmSupportsThisLayer, bounds, childLayers);
     }
 
-    private boolean isProjSupported(String crs) {
+    private static boolean isProjSupported(String crs) {
         for (ProjectionChoice pc : ProjectionPreference.getProjectionChoices()) {
             if (pc.getPreferencesFromCode(crs) != null) return true;
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
index e962399..19248e9 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
@@ -58,7 +58,7 @@ public class AddTagsDialog extends ExtendedDialog {
     static class DeleteTagMarker {
         private int num;
 
-        public DeleteTagMarker(int num) {
+        DeleteTagMarker(int num) {
             this.num = num;
         }
 
@@ -75,7 +75,7 @@ public class AddTagsDialog extends ExtendedDialog {
         private final String tag;
         private final Map<String, Integer> valueCount;
 
-        public ExistingValues(String tag) {
+        ExistingValues(String tag) {
             this.tag = tag;
             this.valueCount = new HashMap<>();
         }
@@ -158,7 +158,7 @@ public class AddTagsDialog extends ExtendedDialog {
             tm.setValueAt(b, i, 0);
             tm.setValueAt(tags[i][0], i, 1);
             tm.setValueAt(tags[i][1].isEmpty() ? new DeleteTagMarker(count[i]) : tags[i][1], i, 2);
-            tm.setValueAt(old , i, 3);
+            tm.setValueAt(old, i, 3);
         }
 
         propertyTable = new JTable(tm) {
@@ -225,7 +225,7 @@ public class AddTagsDialog extends ExtendedDialog {
                         trustedSenders.remove(sender);
                 }
             });
-            tablePanel.add(c , GBC.eol().insets(20, 10, 0, 0));
+            tablePanel.add(c, GBC.eol().insets(20, 10, 0, 0));
         }
         setContent(tablePanel);
         setDefaultButton(2);
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
index 3cb2dca..847b28c 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
@@ -19,12 +19,12 @@ import org.openstreetmap.josm.Main;
 public class RemoteControlHttpServer extends Thread {
 
     /** The server socket */
-    private ServerSocket server = null;
+    private ServerSocket server;
 
     /** The server instance for IPv4 */
-    private static volatile RemoteControlHttpServer instance4 = null;
+    private static volatile RemoteControlHttpServer instance4;
     /** The server instance for IPv6 */
-    private static volatile RemoteControlHttpServer instance6 = null;
+    private static volatile RemoteControlHttpServer instance6;
 
     /**
      * Starts or restarts the HTTP server
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
index 0025614..4216825 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
@@ -71,12 +71,12 @@ import sun.security.x509.X509CertInfo;
 public class RemoteControlHttpsServer extends Thread {
 
     /** The server socket */
-    private ServerSocket server = null;
+    private ServerSocket server;
 
     /** The server instance for IPv4 */
-    private static volatile RemoteControlHttpsServer instance4 = null;
+    private static volatile RemoteControlHttpsServer instance4;
     /** The server instance for IPv6 */
-    private static volatile RemoteControlHttpsServer instance6 = null;
+    private static volatile RemoteControlHttpsServer instance6;
 
     /** SSL context information for connections */
     private SSLContext sslContext;
@@ -133,10 +133,12 @@ public class RemoteControlHttpsServer extends Thread {
      * @param days how many days from now the Certificate is valid for
      * @param algorithm the signing algorithm, eg "SHA256withRSA"
      * @param san SubjectAlternativeName extension (optional)
+     * @return the self-signed X.509 Certificate
+     * @throws GeneralSecurityException if any security error occurs
+     * @throws IOException if any I/O error occurs
      */
     private static X509Certificate generateCertificate(String dn, KeyPair pair, int days, String algorithm, String san)
             throws GeneralSecurityException, IOException {
-        PrivateKey privkey = pair.getPrivate();
         X509CertInfo info = new X509CertInfo();
         Date from = new Date();
         Date to = new Date(from.getTime() + days * 86400000L);
@@ -192,6 +194,7 @@ public class RemoteControlHttpsServer extends Thread {
         info.set(X509CertInfo.EXTENSIONS, ext);
 
         // Sign the cert to identify the algorithm that's used.
+        PrivateKey privkey = pair.getPrivate();
         X509CertImpl cert = new X509CertImpl(info);
         cert.sign(privkey, algorithm);
 
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
index f4a2220..47a3635 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
@@ -108,14 +108,14 @@ public class RequestProcessor extends Thread {
         if (command.charAt(0) == '/') {
             command = command.substring(1);
         }
-        String commandWithSlash = "/" + command;
+        String commandWithSlash = '/' + command;
         if (handlers.get(commandWithSlash) != null) {
             Main.info("RemoteControl: ignoring duplicate command " + command
                     + " with handler " + handler.getName());
         } else {
             if (!silent) {
                 Main.info("RemoteControl: adding command \"" +
-                    command + "\" (handled by " + handler.getSimpleName() + ")");
+                    command + "\" (handled by " + handler.getSimpleName() + ')');
             }
             handlers.put(commandWithSlash, handler);
         }
@@ -353,7 +353,7 @@ public class RequestProcessor extends Thread {
      * @throws IOException
      *             When error
      */
-    private void sendHeader(Writer out, String status, String contentType,
+    private static void sendHeader(Writer out, String status, String contentType,
             boolean endHeaders) throws IOException {
         out.write("HTTP/1.1 " + status + "\r\n");
         Date now = new Date();
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
index 7ad2f1e..a2b9610 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
@@ -80,7 +80,7 @@ public class AddNodeHandler extends RequestHandler {
     private void addNode(Map<String, String> args) {
 
         // Parse the arguments
-        Main.info("Adding node at (" + lat + ", " + lon + ")");
+        Main.info("Adding node at (" + lat + ", " + lon + ')');
 
         // Create a new node
         LatLon ll = new LatLon(lat, lon);
@@ -117,7 +117,7 @@ public class AddNodeHandler extends RequestHandler {
             lat = Double.parseDouble(args.get("lat"));
             lon = Double.parseDouble(args.get("lon"));
         } catch (NumberFormatException e) {
-            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
         if (!Main.main.hasEditLayer()) {
              throw new RequestHandlerBadRequestException(tr("There is no layer opened to add node"));
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
index 6b47821..257db73 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
@@ -105,7 +105,7 @@ public class AddWayHandler extends RequestHandler {
                 double lon = Double.parseDouble(coordinates[1]);
                 allCoordinates.add(new LatLon(lat, lon));
             } catch (NumberFormatException e) {
-                throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+                throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
             }
         }
         if (allCoordinates.isEmpty()) {
@@ -119,7 +119,9 @@ public class AddWayHandler extends RequestHandler {
     }
 
     /**
-     * Find the node with almost the same ccords in dataset or in already added nodes
+     * Find the node with almost the same coords in dataset or in already added nodes
+     * @param ll coordinates
+     * @return node with almost the same coords
      * @since 5845
      */
     Node findOrCreateNode(LatLon ll,  List<Command> commands) {
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
index 28a45d0..6d84211 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/FeaturesHandler.java
@@ -32,7 +32,7 @@ public class FeaturesHandler extends RequestHandler {
                } else {
                    buf.append(", ");
                }
-               String info = RequestProcessor.getHandlerInfoAsJSON("/"+s);
+               String info = RequestProcessor.getHandlerInfoAsJSON('/'+s);
                if (info != null) {
                    buf.append(info);
                } else {
@@ -47,7 +47,7 @@ public class FeaturesHandler extends RequestHandler {
         content = buf.toString();
         contentType = "application/json";
         if (args.containsKey("jsonp")) {
-            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ")";
+            content = args.get("jsonp") + " && " + args.get("jsonp") + '(' + content + ')';
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
index 0c45b8a..afda48a 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
@@ -195,7 +195,7 @@ public class LoadAndZoomHandler extends RequestHandler {
             });
         } else if (args.containsKey("search") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             try {
-                final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"), false, false);
+                final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
                 Main.worker.submit(new Runnable() {
                     @Override
                     public void run() {
@@ -273,7 +273,7 @@ public class LoadAndZoomHandler extends RequestHandler {
             minlon = LatLon.roundToOsmPrecision(Double.parseDouble(args.get("left")));
             maxlon = LatLon.roundToOsmPrecision(Double.parseDouble(args.get("right")));
         } catch (NumberFormatException e) {
-            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+")", e);
+            throw new RequestHandlerBadRequestException("NumberFormatException ("+e.getMessage()+')', e);
         }
 
         // Current API 0.6 check: "The latitudes must be between -90 and 90"
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
index 37788c4..c4f7ff7 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java
@@ -59,9 +59,9 @@ public class LoadDataHandler extends RequestHandler {
 
     @Override
     public String[] getUsageExamples() {
-        final String data = Utils.encodeUrl("<osm version='0.6'><node id='-1' lat='1' lon='2' /></osm>");
         return new String[]{
-                "/load_data?layer_name=extra_layer&new_layer=true&data=" + data};
+                "/load_data?layer_name=extra_layer&new_layer=true&data=" +
+                    Utils.encodeUrl("<osm version='0.6'><node id='-1' lat='1' lon='2' /></osm>")};
     }
 
     @Override
@@ -100,8 +100,14 @@ public class LoadDataHandler extends RequestHandler {
 
         protected final String layerName;
 
+        /**
+         * Constructs a new {@code LoadDataTask}.
+         * @param newLayer if {@code true}, force download to a new layer
+         * @param dataSet data set
+         * @param layerName layer name
+         */
         public LoadDataTask(boolean newLayer, DataSet dataSet, String layerName) {
-            super(newLayer, tr("Loading data"), false);
+            super(newLayer, tr("Loading data"), false, true);
             this.dataSet = dataSet;
             this.layerName = layerName;
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
index 05ce64e..e894e9b 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
@@ -199,6 +199,9 @@ public abstract class RequestHandler {
     }
 
     /**
+     * Returns the request parameters.
+     * @param uri URI as string
+     * @return map of request parameters
      * @see <a href="http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding">
      *      What every web developer must know about URL encoding</a>
      */
@@ -223,7 +226,7 @@ public abstract class RequestHandler {
             String value = args.get(key);
             if (value == null || value.isEmpty()) {
                 error = true;
-                Main.warn("'" + myCommand + "' remote control request must have '" + key + "' parameter");
+                Main.warn('\'' + myCommand + "' remote control request must have '" + key + "' parameter");
                 missingKeys.add(key);
             }
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java
index cb98141..5313ea4 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/VersionHandler.java
@@ -22,7 +22,7 @@ public class VersionHandler extends RequestHandler {
         content = RequestProcessor.PROTOCOLVERSION;
         contentType = "application/json";
         if (args.containsKey("jsonp")) {
-            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ")";
+            content = args.get("jsonp") + " && " + args.get("jsonp") + "(" + content + ')';
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java b/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
index 37d8402..03533b5 100644
--- a/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/GeoImageSessionExporter.java
@@ -123,9 +123,9 @@ public class GeoImageSessionExporter implements SessionLayerExporter {
         return layerElem;
     }
 
-    private void addAttr(String name, String value, Element element, SessionWriter.ExportSupport support) {
-            Element attrElem = support.createElement(name);
-            attrElem.appendChild(support.createTextNode(value));
-            element.appendChild(attrElem);
+    private static void addAttr(String name, String value, Element element, SessionWriter.ExportSupport support) {
+        Element attrElem = support.createElement(name);
+        attrElem.appendChild(support.createTextNode(value));
+        element.appendChild(attrElem);
     }
 }
diff --git a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
index 113fbd8..c2e6133 100644
--- a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
@@ -105,7 +105,7 @@ public class GeoImageSessionImporter implements SessionLayerImporter {
         GpxLayer gpxLayer = null;
         List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
         if (!deps.isEmpty()) {
-            Layer layer = deps.iterator().next().getLayer();
+            Layer layer = deps.get(0).getLayer();
             if (layer instanceof GpxLayer) {
                 gpxLayer = (GpxLayer) layer;
             }
diff --git a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
index 0b76694..49a253c 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
@@ -87,6 +87,8 @@ public class ImagerySessionExporter implements SessionLayerExporter {
             data.put("automatically-change-resolution", Boolean.toString(tsLayer.autoZoom));
             data.put("show-errors", Boolean.toString(tsLayer.showErrors));
         }
+        data.put("dx", String.valueOf(layer.getDx()));
+        data.put("dy", String.valueOf(layer.getDy()));
         for (Map.Entry<String, String> entry : data.entrySet()) {
             Element attrElem = support.createElement(entry.getKey());
             layerElem.appendChild(attrElem);
diff --git a/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java b/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
index 0af3a83..ce999a0 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
@@ -48,17 +48,20 @@ public class ImagerySessionImporter implements SessionLayerImporter {
         if (layer instanceof AbstractTileSourceLayer) {
             AbstractTileSourceLayer tsLayer = (AbstractTileSourceLayer) layer;
             if (attributes.containsKey("automatic-downloading")) {
-                tsLayer.autoLoad = Boolean.valueOf(attributes.get("automatic-downloading"));
+                tsLayer.autoLoad = Boolean.parseBoolean(attributes.get("automatic-downloading"));
             }
 
             if (attributes.containsKey("automatically-change-resolution")) {
-                tsLayer.autoZoom = Boolean.valueOf(attributes.get("automatically-change-resolution"));
+                tsLayer.autoZoom = Boolean.parseBoolean(attributes.get("automatically-change-resolution"));
             }
 
             if (attributes.containsKey("show-errors")) {
-                tsLayer.showErrors = Boolean.valueOf(attributes.get("show-errors"));
+                tsLayer.showErrors = Boolean.parseBoolean(attributes.get("show-errors"));
             }
         }
+        if (attributes.containsKey("dx") && attributes.containsKey("dy")) {
+            layer.setOffset(Double.parseDouble(attributes.get("dx")), Double.parseDouble(attributes.get("dy")));
+        }
         return layer;
     }
 }
diff --git a/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java b/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
index 35fb167..53c6290 100644
--- a/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/MarkerSessionImporter.java
@@ -48,7 +48,7 @@ public class MarkerSessionImporter implements SessionLayerImporter {
                 GpxLayer gpxLayer = null;
                 List<SessionReader.LayerDependency> deps = support.getLayerDependencies();
                 if (!deps.isEmpty()) {
-                    Layer layer = deps.iterator().next().getLayer();
+                    Layer layer = deps.get(0).getLayer();
                     if (layer instanceof GpxLayer) {
                         gpxLayer = (GpxLayer) layer;
                     }
diff --git a/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java b/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
index 4d39a01..29e14e9 100644
--- a/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
@@ -61,7 +61,7 @@ public class OsmDataSessionExporter implements SessionLayerExporter {
     }
 
     private class LayerSaveAction extends AbstractAction {
-        public LayerSaveAction() {
+        LayerSaveAction() {
             putValue(SMALL_ICON, new ImageProvider("save").setWidth(16).get());
             putValue(SHORT_DESCRIPTION, layer.requiresSaveToFile() ?
                     tr("Layer contains unsaved data - save to file.") :
diff --git a/src/org/openstreetmap/josm/io/session/SessionLayerExporter.java b/src/org/openstreetmap/josm/io/session/SessionLayerExporter.java
index 64810f1..8469cf4 100644
--- a/src/org/openstreetmap/josm/io/session/SessionLayerExporter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionLayerExporter.java
@@ -5,46 +5,47 @@ import java.awt.Component;
 import java.io.IOException;
 import java.util.Collection;
 
-import org.w3c.dom.Element;
-
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
+import org.w3c.dom.Element;
 
 public interface SessionLayerExporter {
 
     /**
      * Return the Layers, this Layer depends on.
+     * @return the layer dependencies
      */
     Collection<Layer> getDependencies();
 
     /**
      * The GUI for exporting this layer.
+     * @return the export panel
      */
     Component getExportPanel();
 
     /**
-     * Return true, if the layer should be included in the
-     * list of exported layers.
+     * Return true, if the layer should be included in the list of exported layers.
      *
      * The user can veto this in the export panel.
+     * @return {@code true} if the layer should be included in the list of exported layers, {@code false} otherwise.
      */
     boolean shallExport();
 
     /**
-     * Return true, if some data needs to be included in
-     * the zip archive. This decision depends on the user
+     * Return true, if some data needs to be included in the zip archive. This decision depends on the user
      * selection in the export panel.
      *
-     * If any layer requires zip, the user can only save as
-     * .joz. Otherwise both .jos and .joz are possible.
+     * If any layer requires zip, the user can only save as .joz. Otherwise both .jos and .joz are possible.
+     * @return {@code true} if some data needs to be included in the zip archive, {@code false} otherwise.
      */
     boolean requiresZip();
 
     /**
      * Save meta data to the .jos file. Return a layer XML element.
      * Use <code>support</code> to save files in the zip archive as needed.
+     * @param support support class providing export utilities
+     * @return the resulting XML element
+     * @throws IOException  if any I/O error occurs
      */
     Element export(ExportSupport support) throws IOException;
-
 }
-
diff --git a/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java b/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
index f60da33..bad68be 100644
--- a/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
@@ -3,16 +3,22 @@ package org.openstreetmap.josm.io.session;
 
 import java.io.IOException;
 
-import org.w3c.dom.Element;
-
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.session.SessionReader.ImportSupport;
+import org.w3c.dom.Element;
 
 public interface SessionLayerImporter {
+
     /**
      * Load the layer from xml meta-data.
+     * @param elem XML element
+     * @param support support class providing import utilities
+     * @param progressMonitor progress monitor
+     * @return the resulting layer
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if invalid data is read
      */
     Layer load(Element elem, ImportSupport support, ProgressMonitor progressMonitor) throws IOException, IllegalDataException;
 }
diff --git a/src/org/openstreetmap/josm/io/session/SessionReader.java b/src/org/openstreetmap/josm/io/session/SessionReader.java
index 3b444fe..3f49603 100644
--- a/src/org/openstreetmap/josm/io/session/SessionReader.java
+++ b/src/org/openstreetmap/josm/io/session/SessionReader.java
@@ -170,6 +170,8 @@ public class SessionReader {
          *         "layers/01/data.osm"
          *     - relativ to the .joz file:
          *         "../save/data.osm"           ("../" steps out of the archive)
+         * @param uriStr URI as string
+         * @return the InputStream
          *
          * @throws IOException Thrown when no Stream can be opened for the given URI, e.g. when the linked file has been deleted.
          */
@@ -195,6 +197,9 @@ public class SessionReader {
          *
          * Returns null if the URI points to a file inside the zip archive.
          * In this case, inZipPath will be set to the corresponding path.
+         * @param uriStr the URI as string
+         * @return the resulting File
+         * @throws IOException if any I/O error occurs
          */
         public File getFile(String uriStr) throws IOException {
             inZipPath = null;
@@ -242,6 +247,7 @@ public class SessionReader {
 
         /**
          * Name of the layer that is currently imported.
+         * @return layer name
          */
         public String getLayerName() {
             return layerName;
@@ -249,6 +255,7 @@ public class SessionReader {
 
         /**
          * Index of the layer that is currently imported.
+         * @return layer index
          */
         public int getLayerIndex() {
             return layerIndex;
@@ -257,6 +264,7 @@ public class SessionReader {
         /**
          * Dependencies - maps the layer index to the importer of the given
          * layer. All the dependent importers have loaded completely at this point.
+         * @return layer dependencies
          */
         public List<LayerDependency> getLayerDependencies() {
             return layerDependencies;
@@ -502,15 +510,8 @@ public class SessionReader {
                     Main.warn(ex);
                 }
             }
-        }
-        for (Entry<Integer, Layer> e : layersMap.entrySet()) {
-            Layer l = e.getValue();
-            if (l == null) {
-                continue;
-            }
-
-            l.setName(names.get(e.getKey()));
-            layers.add(l);
+            layer.setName(names.get(entry.getKey()));
+            layers.add(layer);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/session/SessionWriter.java b/src/org/openstreetmap/josm/io/session/SessionWriter.java
index 0cdaa83..5f4333a 100644
--- a/src/org/openstreetmap/josm/io/session/SessionWriter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionWriter.java
@@ -51,12 +51,12 @@ public class SessionWriter {
     private static Map<Class<? extends Layer>, Class<? extends SessionLayerExporter>> sessionLayerExporters = new HashMap<>();
 
     static {
-        registerSessionLayerExporter(OsmDataLayer.class , OsmDataSessionExporter.class);
-        registerSessionLayerExporter(TMSLayer.class , ImagerySessionExporter.class);
-        registerSessionLayerExporter(WMSLayer.class , ImagerySessionExporter.class);
-        registerSessionLayerExporter(WMTSLayer.class , ImagerySessionExporter.class);
-        registerSessionLayerExporter(GpxLayer.class , GpxTracksSessionExporter.class);
-        registerSessionLayerExporter(GeoImageLayer.class , GeoImageSessionExporter.class);
+        registerSessionLayerExporter(OsmDataLayer.class, OsmDataSessionExporter.class);
+        registerSessionLayerExporter(TMSLayer.class, ImagerySessionExporter.class);
+        registerSessionLayerExporter(WMSLayer.class, ImagerySessionExporter.class);
+        registerSessionLayerExporter(WMTSLayer.class, ImagerySessionExporter.class);
+        registerSessionLayerExporter(GpxLayer.class, GpxTracksSessionExporter.class);
+        registerSessionLayerExporter(GeoImageLayer.class, GeoImageSessionExporter.class);
         registerSessionLayerExporter(MarkerLayer.class, MarkerSessionExporter.class);
     }
 
@@ -141,6 +141,7 @@ public class SessionWriter {
          * @param zipPath the path inside the zip archive, e.g. "layers/03/data.xml"
          * @return the OutputStream you can write to. Never close the returned
          * output stream, but make sure to flush buffers.
+         * @throws IOException if any I/O error occurs
          */
         public OutputStream getOutputStreamZip(String zipPath) throws IOException {
             if (!isZip()) throw new RuntimeException();
diff --git a/src/org/openstreetmap/josm/plugins/Plugin.java b/src/org/openstreetmap/josm/plugins/Plugin.java
index 86f806d..2f09ab3 100644
--- a/src/org/openstreetmap/josm/plugins/Plugin.java
+++ b/src/org/openstreetmap/josm/plugins/Plugin.java
@@ -49,7 +49,7 @@ public abstract class Plugin implements MapFrameListener {
      * (The actual implementation to request the info from a static variable
      * is a bit hacky, but it works).
      */
-    private PluginInformation info = null;
+    private PluginInformation info;
 
     /**
      * Creates the plugin
@@ -91,6 +91,7 @@ public abstract class Plugin implements MapFrameListener {
     /**
      * Called in the preferences dialog to create a preferences page for the plugin,
      * if any available.
+     * @return the preferences dialog, or {@code null}
      */
     public PreferenceSetting getPreferenceSetting() {
         return null;
@@ -140,6 +141,7 @@ public abstract class Plugin implements MapFrameListener {
      *   getPluginResourceClassLoader().getResource("resources/pluginProperties.properties");
      *
      * (Note the missing leading "/".)
+     * @return a class loader for loading resources from the plugin jar
      */
     public ClassLoader getPluginResourceClassLoader() {
         File pluginDir = Main.pref.getPluginsDirectory();
diff --git a/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java b/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
index 5766acb..8597a4c 100644
--- a/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
+++ b/src/org/openstreetmap/josm/plugins/PluginDownloadTask.java
@@ -43,7 +43,6 @@ public class PluginDownloadTask extends PleaseWaitRunnable{
     private final Collection<PluginInformation> toUpdate = new LinkedList<>();
     private final Collection<PluginInformation> failed = new LinkedList<>();
     private final Collection<PluginInformation> downloaded = new LinkedList<>();
-    //private Exception lastException;
     private boolean canceled;
     private HttpURLConnection downloadConnection;
 
@@ -162,7 +161,9 @@ public class PluginDownloadTask extends PleaseWaitRunnable{
         getProgressMonitor().setTicksCount(toUpdate.size());
         for (PluginInformation d : toUpdate) {
             if (canceled) return;
-            progressMonitor.subTask(tr("Downloading Plugin {0}...", d.name));
+            String message = tr("Downloading Plugin {0}...", d.name);
+            Main.info(message);
+            progressMonitor.subTask(message);
             progressMonitor.worked(1);
             File pluginFile = new File(pluginDir, d.name + ".jar.new");
             try {
diff --git a/src/org/openstreetmap/josm/plugins/PluginHandler.java b/src/org/openstreetmap/josm/plugins/PluginHandler.java
index 1daf3da..3438659 100644
--- a/src/org/openstreetmap/josm/plugins/PluginHandler.java
+++ b/src/org/openstreetmap/josm/plugins/PluginHandler.java
@@ -7,6 +7,7 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Component;
 import java.awt.Font;
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -78,7 +79,7 @@ public final class PluginHandler {
     /**
      * Deprecated plugins that are removed on start
      */
-    public static final Collection<DeprecatedPlugin> DEPRECATED_PLUGINS;
+    protected static final Collection<DeprecatedPlugin> DEPRECATED_PLUGINS;
     static {
         String IN_CORE = tr("integrated into main program");
 
@@ -125,6 +126,7 @@ public final class PluginHandler {
             new DeprecatedPlugin("notes", IN_CORE),
             new DeprecatedPlugin("mirrored_download", IN_CORE),
             new DeprecatedPlugin("ImageryCache", IN_CORE),
+            new DeprecatedPlugin("commons-imaging", tr("replaced by new {0} plugin", "apache-commons")),
         });
     }
 
@@ -217,7 +219,8 @@ public final class PluginHandler {
         "Intersect_way",
         "CADTools",                // See #11438, #11518, https://github.com/ROTARIUANAMARIA/CADTools/issues/1
         "ContourOverlappingMerge", // See #11202, #11518, https://github.com/bularcasergiu/ContourOverlappingMerge/issues/1
-        "LaneConnector"            // See #11468, #11518, https://github.com/TrifanAdrian/LanecConnectorPlugin/issues/1
+        "LaneConnector",           // See #11468, #11518, https://github.com/TrifanAdrian/LanecConnectorPlugin/issues/1
+        "Remove.redundant.points"  // See #11468, #11518, https://github.com/bularcasergiu/RemoveRedundantPoints (not even created an issue...)
     };
 
     /**
@@ -231,6 +234,12 @@ public final class PluginHandler {
     public static final Collection<PluginProxy> pluginList = new LinkedList<>();
 
     /**
+     * All exceptions that occured during plugin loading
+     * @since 8938
+     */
+    public static final Map<String, Exception> pluginLoadingExceptions = new HashMap<>();
+
+    /**
      * Global plugin ClassLoader.
      */
     private static DynamicURLClassLoader pluginClassLoader;
@@ -248,7 +257,7 @@ public final class PluginHandler {
         }
     }
 
-    private static PluginDownloadTask pluginDownloadTask = null;
+    private static PluginDownloadTask pluginDownloadTask;
 
     public static Collection<ClassLoader> getResourceClassLoaders() {
         return Collections.unmodifiableCollection(sources);
@@ -278,7 +287,7 @@ public final class PluginHandler {
 
         // notify user about removed deprecated plugins
         //
-        StringBuilder sb = new StringBuilder();
+        StringBuilder sb = new StringBuilder(32);
         sb.append("<html>")
           .append(trn(
                 "The following plugin is no longer necessary and has been deactivated:",
@@ -307,6 +316,7 @@ public final class PluginHandler {
      * of plugins in the preferences, if necessary.
      *
      * Asks the user for every unmaintained plugin whether it should be removed.
+     * @param parent The parent Component used to display warning popup
      *
      * @param plugins the collection of plugins
      */
@@ -315,7 +325,7 @@ public final class PluginHandler {
             if (!plugins.contains(unmaintained)) {
                 continue;
             }
-            String msg =  tr("<html>Loading of the plugin \"{0}\" was requested."
+            String msg = tr("<html>Loading of the plugin \"{0}\" was requested."
                     + "<br>This plugin is no longer developed and very likely will produce errors."
                     +"<br>It should be disabled.<br>Delete from preferences?</html>", unmaintained);
             if (confirmDisablePlugin(parent, msg, unmaintained)) {
@@ -701,12 +711,14 @@ public final class PluginHandler {
             }
             msg = null;
         } catch (PluginException e) {
+            pluginLoadingExceptions.put(plugin.name, e);
             Main.error(e);
             if (e.getCause() instanceof ClassNotFoundException) {
                 msg = tr("<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was not found.<br>"
                         + "Delete from preferences?</html>", plugin.name, plugin.className);
             }
         }  catch (Exception e) {
+            pluginLoadingExceptions.put(plugin.name, e);
             Main.error(e);
         }
         if (msg != null && confirmDisablePlugin(parent, msg, plugin.name)) {
@@ -952,6 +964,7 @@ public final class PluginHandler {
      * @param pluginsWanted the collection of plugins to update. Updates all plugins if {@code null}
      * @param monitor the progress monitor. Defaults to {@link NullProgressMonitor#INSTANCE} if null.
      * @param displayErrMsg if {@code true}, a blocking error message is displayed in case of I/O exception.
+     * @return the list of plugins to load
      * @throws IllegalArgumentException if plugins is null
      */
     public static Collection<PluginInformation> updatePlugins(Component parent,
@@ -1088,16 +1101,19 @@ public final class PluginHandler {
                         null /* no specific help context */
                 )
         };
-        int ret = HelpAwareOptionPane.showOptionDialog(
-                parent,
-                reason,
-                tr("Disable plugin"),
-                JOptionPane.WARNING_MESSAGE,
-                null,
-                options,
-                options[0],
-                null // FIXME: add help topic
-        );
+        int ret = -1;
+        if (!GraphicsEnvironment.isHeadless()) {
+            ret = HelpAwareOptionPane.showOptionDialog(
+                    parent,
+                    reason,
+                    tr("Disable plugin"),
+                    JOptionPane.WARNING_MESSAGE,
+                    null,
+                    options,
+                    options[0],
+                    null // FIXME: add help topic
+            );
+        }
         return ret == 0;
     }
 
@@ -1389,7 +1405,7 @@ public final class PluginHandler {
             PluginInformation pi = pp.getPluginInformation();
             pl.remove(pi.name);
             pl.add(pi.name + " (" + (pi.localversion != null && !pi.localversion.isEmpty()
-                    ? pi.localversion : "unknown") + ")");
+                    ? pi.localversion : "unknown") + ')');
         }
         Collections.sort(pl);
         if (!pl.isEmpty()) {
@@ -1447,6 +1463,20 @@ public final class PluginHandler {
         return pluginTab;
     }
 
+    /**
+     * Returns the set of deprecated and unmaintained plugins.
+     * @return set of deprecated and unmaintained plugins names.
+     * @since 8938
+     */
+    public static Set<String> getDeprecatedAndUnmaintainedPlugins() {
+        Set<String> result = new HashSet<>(DEPRECATED_PLUGINS.size() + UNMAINTAINED_PLUGINS.length);
+        for (DeprecatedPlugin dp : DEPRECATED_PLUGINS) {
+            result.add(dp.name);
+        }
+        result.addAll(Arrays.asList(UNMAINTAINED_PLUGINS));
+        return result;
+    }
+
     private static class UpdatePluginsMessagePanel extends JPanel {
         private JMultilineLabel lblMessage;
         private JCheckBox cbDontShowAgain;
@@ -1470,7 +1500,7 @@ public final class PluginHandler {
             cbDontShowAgain.setFont(cbDontShowAgain.getFont().deriveFont(Font.PLAIN));
         }
 
-        public UpdatePluginsMessagePanel() {
+        UpdatePluginsMessagePanel() {
             build();
         }
 
diff --git a/src/org/openstreetmap/josm/plugins/PluginInformation.java b/src/org/openstreetmap/josm/plugins/PluginInformation.java
index 5315ac2..4b08e8b 100644
--- a/src/org/openstreetmap/josm/plugins/PluginInformation.java
+++ b/src/org/openstreetmap/josm/plugins/PluginInformation.java
@@ -43,43 +43,43 @@ import org.openstreetmap.josm.tools.Utils;
 public class PluginInformation {
 
     /** The plugin jar file. */
-    public File file = null;
+    public File file;
     /** The plugin name. */
-    public String name = null;
+    public String name;
     /** The lowest JOSM version required by this plugin (from plugin list). **/
-    public int mainversion = 0;
+    public int mainversion;
     /** The lowest JOSM version required by this plugin (from locally available jar). **/
-    public int localmainversion = 0;
+    public int localmainversion;
     /** The plugin class name. */
-    public String className = null;
+    public String className;
     /** Determines if the plugin is an old version loaded for incompatibility with latest JOSM (from plugin list) */
-    public boolean oldmode = false;
+    public boolean oldmode;
     /** The list of required plugins, separated by ';' (from plugin list). */
-    public String requires = null;
+    public String requires;
     /** The list of required plugins, separated by ';' (from locally available jar). */
-    public String localrequires = null;
+    public String localrequires;
     /** The plugin link (for documentation). */
-    public String link = null;
+    public String link;
     /** The plugin description. */
-    public String description = null;
+    public String description;
     /** Determines if the plugin must be loaded early or not. */
-    public boolean early = false;
+    public boolean early;
     /** The plugin author. */
-    public String author = null;
+    public String author;
     /** The plugin stage, determining the loading sequence order of plugins. */
     public int stage = 50;
     /** The plugin version (from plugin list). **/
-    public String version = null;
+    public String version;
     /** The plugin version (from locally available jar). **/
-    public String localversion = null;
+    public String localversion;
     /** The plugin download link. */
-    public String downloadlink = null;
+    public String downloadlink;
     /** The plugin icon path inside jar. */
     public String iconPath;
     /** The plugin icon. */
     public ImageIcon icon;
     /** Plugin can be loaded at any time and not just at start. */
-    public boolean canloadatruntime = false;
+    public boolean canloadatruntime;
     /** The libraries referenced in Class-Path manifest attribute. */
     public List<URL> libraries = new LinkedList<>();
     /** All manifest attributes. */
@@ -179,8 +179,7 @@ public class PluginInformation {
 
     /**
      * Updates the plugin information of this plugin information object with the
-     * plugin information in a plugin information object retrieved from a plugin
-     * jar.
+     * plugin information in a plugin information object retrieved from a plugin jar.
      *
      * @param other the plugin information object retrieved from the jar file
      * @since 5601
@@ -195,6 +194,7 @@ public class PluginInformation {
         this.canloadatruntime = other.canloadatruntime;
         this.libraries = other.libraries;
         this.stage = other.stage;
+        this.file = other.file;
     }
 
     private void scanManifest(Manifest manifest, boolean oldcheck) {
diff --git a/src/org/openstreetmap/josm/plugins/PluginListParser.java b/src/org/openstreetmap/josm/plugins/PluginListParser.java
index c48b5f9..d3ab2b6 100644
--- a/src/org/openstreetmap/josm/plugins/PluginListParser.java
+++ b/src/org/openstreetmap/josm/plugins/PluginListParser.java
@@ -69,7 +69,7 @@ public class PluginListParser {
                     line = line.substring(1);
                     while (line.length() > 70) {
                         manifest.append(line.substring(0, 70)).append('\n');
-                        line = " " + line.substring(70);
+                        line = ' ' + line.substring(70);
                     }
                     manifest.append(line).append('\n');
                     continue;
diff --git a/src/org/openstreetmap/josm/plugins/PluginProxy.java b/src/org/openstreetmap/josm/plugins/PluginProxy.java
index ba8db66..1e5a643 100644
--- a/src/org/openstreetmap/josm/plugins/PluginProxy.java
+++ b/src/org/openstreetmap/josm/plugins/PluginProxy.java
@@ -18,42 +18,58 @@ import org.openstreetmap.josm.tools.BugReportExceptionHandler;
  */
 public class PluginProxy extends Plugin {
 
+    /**
+     * The plugin.
+     */
     public final Object plugin;
 
+    /**
+     * Constructs a new {@code PluginProxy}.
+     * @param plugin the plugin
+     * @param info the associated plugin info
+     */
     public PluginProxy(Object plugin, PluginInformation info) {
         super(info);
         this.plugin = plugin;
     }
 
-    @Override public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+    private void handlePluginException(Exception e) {
+        PluginHandler.pluginLoadingExceptions.put(getPluginInformation().name, e);
+        BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+    }
+
+    @Override
+    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
         try {
             plugin.getClass().getMethod("mapFrameInitialized", MapFrame.class, MapFrame.class).invoke(plugin, oldFrame, newFrame);
         } catch (NoSuchMethodException e) {
             Main.debug("Plugin "+plugin+" does not define mapFrameInitialized");
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
     }
 
-    @Override public PreferenceSetting getPreferenceSetting() {
+    @Override
+    public PreferenceSetting getPreferenceSetting() {
         try {
             return (PreferenceSetting) plugin.getClass().getMethod("getPreferenceSetting").invoke(plugin);
         } catch (NoSuchMethodException e) {
             Main.debug("Plugin "+plugin+" does not define getPreferenceSetting");
             return null;
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
         return null;
     }
 
-    @Override public void addDownloadSelection(List<DownloadSelection> list) {
+    @Override
+    public void addDownloadSelection(List<DownloadSelection> list) {
         try {
             plugin.getClass().getMethod("addDownloadSelection", List.class).invoke(plugin, list);
         } catch (NoSuchMethodException e) {
             Main.debug("Plugin "+plugin+" does not define addDownloadSelection");
         } catch (Exception e) {
-            BugReportExceptionHandler.handleException(new PluginException(this, getPluginInformation().name, e));
+            handlePluginException(e);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/AlphanumComparator.java b/src/org/openstreetmap/josm/tools/AlphanumComparator.java
index 5c04db6..f4c38f5 100644
--- a/src/org/openstreetmap/josm/tools/AlphanumComparator.java
+++ b/src/org/openstreetmap/josm/tools/AlphanumComparator.java
@@ -60,10 +60,14 @@ public final class AlphanumComparator implements Comparator<String>, Serializabl
     }
 
     /**
-     * Length of string is passed in for improved efficiency (only need to
-     * calculate it once) *
+     * Returns an alphanum chunk.
+     * Length of string is passed in for improved efficiency (only need to calculate it once).
+     * @param s string
+     * @param slength string length
+     * @param marker position
+     * @return alphanum chunk found at given position
      */
-    private String getChunk(String s, int slength, int marker) {
+    private static String getChunk(String s, int slength, int marker) {
         StringBuilder chunk = new StringBuilder();
         char c = s.charAt(marker);
         chunk.append(c);
diff --git a/src/org/openstreetmap/josm/tools/AudioPlayer.java b/src/org/openstreetmap/josm/tools/AudioPlayer.java
index 8f5f440..7eda6c2 100644
--- a/src/org/openstreetmap/josm/tools/AudioPlayer.java
+++ b/src/org/openstreetmap/josm/tools/AudioPlayer.java
@@ -25,7 +25,7 @@ import org.openstreetmap.josm.Main;
  */
 public final class AudioPlayer extends Thread {
 
-    private static volatile AudioPlayer audioPlayer = null;
+    private static volatile AudioPlayer audioPlayer;
 
     private enum State { INITIALIZING, NOTPLAYING, PLAYING, PAUSED, INTERRUPTED }
 
@@ -74,7 +74,7 @@ public final class AudioPlayer extends Thread {
             result = Result.WAITING;
             interrupt();
             while (result == Result.WAITING) {
-                sleep(10); /* yield(); */
+                sleep(10);
             }
             if (result == Result.FAILED)
                 throw exception;
@@ -122,7 +122,7 @@ public final class AudioPlayer extends Thread {
      * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url) throws Exception {
-        AudioPlayer.get().command.play(url, 0.0, 1.0);
+        AudioPlayer.getInstance().command.play(url, 0.0, 1.0);
     }
 
     /**
@@ -132,7 +132,7 @@ public final class AudioPlayer extends Thread {
      * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url, double seconds) throws Exception {
-        AudioPlayer.get().command.play(url, seconds, 1.0);
+        AudioPlayer.getInstance().command.play(url, seconds, 1.0);
     }
 
     /**
@@ -143,7 +143,7 @@ public final class AudioPlayer extends Thread {
      * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void play(URL url, double seconds, double speed) throws Exception {
-        AudioPlayer.get().command.play(url, seconds, speed);
+        AudioPlayer.getInstance().command.play(url, seconds, speed);
     }
 
     /**
@@ -151,7 +151,7 @@ public final class AudioPlayer extends Thread {
      * @throws Exception audio fault exception, e.g. can't open stream,  unhandleable audio format
      */
     public static void pause() throws Exception {
-        AudioPlayer.get().command.pause();
+        AudioPlayer.getInstance().command.pause();
     }
 
     /**
@@ -159,7 +159,7 @@ public final class AudioPlayer extends Thread {
      * @return url - could be null
      */
     public static URL url() {
-        return AudioPlayer.get().playingUrl;
+        return AudioPlayer.getInstance().playingUrl;
     }
 
     /**
@@ -167,7 +167,7 @@ public final class AudioPlayer extends Thread {
      * @return boolean whether or not paused
      */
     public static boolean paused() {
-        return AudioPlayer.get().state == State.PAUSED;
+        return AudioPlayer.getInstance().state == State.PAUSED;
     }
 
     /**
@@ -175,7 +175,7 @@ public final class AudioPlayer extends Thread {
      * @return boolean whether or not playing
      */
     public static boolean playing() {
-        return AudioPlayer.get().state == State.PLAYING;
+        return AudioPlayer.getInstance().state == State.PLAYING;
     }
 
     /**
@@ -183,7 +183,7 @@ public final class AudioPlayer extends Thread {
      * @return double seconds
      */
     public static double position() {
-        return AudioPlayer.get().position;
+        return AudioPlayer.getInstance().position;
     }
 
     /**
@@ -191,20 +191,22 @@ public final class AudioPlayer extends Thread {
      * @return double, speed multiplier
      */
     public static double speed() {
-        return AudioPlayer.get().speed;
+        return AudioPlayer.getInstance().speed;
     }
 
     /**
-     *  gets the singleton object, and if this is the first time, creates it along with
-     *  the thread to support audio
+     * Returns the singleton object, and if this is the first time, creates it along with
+     * the thread to support audio
+     * @return the unique instance
      */
-    private static AudioPlayer get() {
+    private static AudioPlayer getInstance() {
         if (audioPlayer != null)
             return audioPlayer;
         try {
             audioPlayer = new AudioPlayer();
             return audioPlayer;
         } catch (Exception ex) {
+            Main.error(ex);
             return null;
         }
     }
@@ -314,7 +316,6 @@ public final class AudioPlayer extends Thread {
                                 if (calibratedOffset > 0.0) {
                                     long bytesToSkip = (long) (calibratedOffset /* seconds (double) */ * bytesPerSecond);
                                     // skip doesn't seem to want to skip big chunks, so reduce it to smaller ones
-                                    // audioInputStream.skip(bytesToSkip);
                                     while (bytesToSkip > chunk) {
                                         nBytesRead = audioInputStream.skip(chunk);
                                         if (nBytesRead <= 0)
diff --git a/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java b/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java
index 94139a7..0fac45f 100644
--- a/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java
+++ b/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java
@@ -40,10 +40,10 @@ import org.openstreetmap.josm.plugins.PluginHandler;
  */
 public final class BugReportExceptionHandler implements Thread.UncaughtExceptionHandler {
 
-    private static boolean handlingInProgress = false;
-    private static volatile BugReporterThread bugReporterThread = null;
-    private static int exceptionCounter = 0;
-    private static boolean suppressExceptionDialogs = false;
+    private static boolean handlingInProgress;
+    private static volatile BugReporterThread bugReporterThread;
+    private static int exceptionCounter;
+    private static boolean suppressExceptionDialogs;
 
     private static class BugReporterThread extends Thread {
 
@@ -132,7 +132,7 @@ public final class BugReportExceptionHandler implements Thread.UncaughtException
          * Constructs a new {@code BugReporterThread}.
          * @param t the exception
          */
-        public BugReporterThread(Throwable t) {
+        BugReporterThread(Throwable t) {
             super("Bug Reporter");
             this.e = t;
         }
diff --git a/src/org/openstreetmap/josm/tools/ColorHelper.java b/src/org/openstreetmap/josm/tools/ColorHelper.java
index 5b6cc2d..b92d1a7 100644
--- a/src/org/openstreetmap/josm/tools/ColorHelper.java
+++ b/src/org/openstreetmap/josm/tools/ColorHelper.java
@@ -62,7 +62,7 @@ public final class ColorHelper {
     public static String color2html(Color col, boolean withAlpha) {
         if (col == null)
             return null;
-        String code = "#"+int2hex(col.getRed())+int2hex(col.getGreen())+int2hex(col.getBlue());
+        String code = '#'+int2hex(col.getRed())+int2hex(col.getGreen())+int2hex(col.getBlue());
         if (withAlpha) {
             int alpha = col.getAlpha();
             if (alpha < 255) {
diff --git a/src/org/openstreetmap/josm/tools/CopyList.java b/src/org/openstreetmap/josm/tools/CopyList.java
index e206094..9ee70e6 100644
--- a/src/org/openstreetmap/josm/tools/CopyList.java
+++ b/src/org/openstreetmap/josm/tools/CopyList.java
@@ -147,7 +147,7 @@ public final class CopyList<E> extends AbstractList<E> implements RandomAccess,
         /**
          * Index of element to be returned by subsequent call to next.
          */
-        private int cursor = 0;
+        private int cursor;
 
         /**
          * Index of element returned by most recent call to next or
diff --git a/src/org/openstreetmap/josm/tools/Diff.java b/src/org/openstreetmap/josm/tools/Diff.java
index 7f25043..c611164 100644
--- a/src/org/openstreetmap/josm/tools/Diff.java
+++ b/src/org/openstreetmap/josm/tools/Diff.java
@@ -82,9 +82,7 @@ import java.util.Map;
     GNU General Public License</a>
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
  */
-
 public class Diff {
 
     /** Prepare to find differences between two arrays.  Each element of
@@ -93,6 +91,8 @@ public class Diff {
       are no longer needed for computing the differences.  They will
       be needed again later to print the results of the comparison as
       an edit script, if desired.
+     * @param a first array
+     * @param b second array
      */
     public Diff(Object[] a, Object[] b) {
         Map<Object, Integer> h = new HashMap<>(a.length + b.length);
@@ -106,11 +106,11 @@ public class Diff {
     /** When set to true, the comparison uses a heuristic to speed it up.
     With this heuristic, for files with a constant small density
     of changes, the algorithm is linear in the file size.  */
-    public boolean heuristic = false;
+    public boolean heuristic;
 
     /** When set to true, the algorithm returns a guarranteed minimal
       set of changes.  This makes things slower, sometimes much slower. */
-    public boolean noDiscards = false;
+    public boolean noDiscards;
 
     private int[] xvec, yvec; /* Vectors being compared. */
     private int[] fdiag;      /* Vector, indexed by diagonal, containing
@@ -127,30 +127,31 @@ public class Diff {
     /** Snakes bigger than this are considered "big". */
     private static final int SNAKE_LIMIT = 20;
 
-    /** Find the midpoint of the shortest edit script for a specified
-     portion of the two files.
-
-     We scan from the beginnings of the files, and simultaneously from the ends,
-     doing a breadth-first search through the space of edit-sequence.
-     When the two searches meet, we have found the midpoint of the shortest
-     edit sequence.
-
-     The value returned is the number of the diagonal on which the midpoint lies.
-     The diagonal number equals the number of inserted lines minus the number
-     of deleted lines (counting only lines before the midpoint).
-     The edit cost is stored into COST; this is the total number of
-     lines inserted or deleted (counting only lines before the midpoint).
-
-     This function assumes that the first lines of the specified portions
-     of the two files do not match, and likewise that the last lines do not
-     match.  The caller must trim matching lines from the beginning and end
-     of the portions it is going to specify.
-
-     Note that if we return the "wrong" diagonal value, or if
-     the value of bdiag at that diagonal is "wrong",
-     the worst this can do is cause suboptimal diff output.
-     It cannot cause incorrect diff output.  */
-
+    /**
+     * Find the midpoint of the shortest edit script for a specified
+     * portion of the two files.
+     *
+     * We scan from the beginnings of the files, and simultaneously from the ends,
+     * doing a breadth-first search through the space of edit-sequence.
+     * When the two searches meet, we have found the midpoint of the shortest
+     * edit sequence.
+     *
+     * The value returned is the number of the diagonal on which the midpoint lies.
+     * The diagonal number equals the number of inserted lines minus the number
+     * of deleted lines (counting only lines before the midpoint).
+     * The edit cost is stored into COST; this is the total number of
+     * lines inserted or deleted (counting only lines before the midpoint).
+     *
+     * This function assumes that the first lines of the specified portions
+     * of the two files do not match, and likewise that the last lines do not
+     * match.  The caller must trim matching lines from the beginning and end
+     * of the portions it is going to specify.
+     *
+     * Note that if we return the "wrong" diagonal value, or if
+     * the value of bdiag at that diagonal is "wrong",
+     * the worst this can do is cause suboptimal diff output.
+     * It cannot cause incorrect diff output.
+     */
     private int diag(int xoff, int xlim, int yoff, int ylim) {
         final int[] fd = fdiag; // Give the compiler a chance.
         final int[] bd = bdiag; // Additional help for the compiler.
@@ -375,7 +376,7 @@ public class Diff {
         filevec[1].discard_confusing_lines(filevec[0]);
     }
 
-    private boolean inhibit = false;
+    private boolean inhibit;
 
     /** Adjust inserts/deletes of blank lines to join changes
         as much as possible.
@@ -475,8 +476,7 @@ public class Diff {
     forwardScript = new ForwardScript(),
     reverseScript = new ReverseScript();
 
-    /** Report the differences of two files.  DEPTH is the current directory
-        depth. */
+    /** Report the differences of two files. DEPTH is the current directory depth. */
     public final Change diff_2(final boolean reverse) {
         return diff(reverse ? reverseScript : forwardScript);
     }
diff --git a/src/org/openstreetmap/josm/tools/ExceptionUtil.java b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
index 59bc54e..fa78a6a 100644
--- a/src/org/openstreetmap/josm/tools/ExceptionUtil.java
+++ b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
@@ -266,7 +266,7 @@ public final class ExceptionUtil {
         String msg = null;
         if (header != null) {
             if (body != null && !header.equals(body)) {
-                msg = header + " (" + body + ")";
+                msg = header + " (" + body + ')';
             } else {
                 msg = header;
             }
@@ -583,8 +583,8 @@ public final class ExceptionUtil {
         String message = tr("The OSM server ''{0}'' does not know about an object<br>"
                 + "you tried to read, update, or delete. Either the respective object<br>"
                 + "does not exist on the server or you are using an invalid URL to access<br>"
-                + "it. Please carefully check the server''s address ''{0}'' for typos."
-                , apiUrl);
+                + "it. Please carefully check the server''s address ''{0}'' for typos.",
+                apiUrl);
         Main.error(e);
         return "<html>" + message + "</html>";
     }
diff --git a/src/org/openstreetmap/josm/tools/FontsManager.java b/src/org/openstreetmap/josm/tools/FontsManager.java
index 84bc291..fdb3333 100644
--- a/src/org/openstreetmap/josm/tools/FontsManager.java
+++ b/src/org/openstreetmap/josm/tools/FontsManager.java
@@ -21,7 +21,7 @@ public final class FontsManager {
     /**
      * List of fonts embedded into JOSM jar.
      */
-    public static final Collection<String> INCLUDED_FONTS = Arrays.asList(
+    private static final Collection<String> INCLUDED_FONTS = Arrays.asList(
             "DroidSans.ttf",
             "DroidSans-Bold.ttf"
     );
diff --git a/src/org/openstreetmap/josm/tools/GBC.java b/src/org/openstreetmap/josm/tools/GBC.java
index e2c9ba8..1b86396 100644
--- a/src/org/openstreetmap/josm/tools/GBC.java
+++ b/src/org/openstreetmap/josm/tools/GBC.java
@@ -121,29 +121,52 @@ public final class GBC extends GridBagConstraints {
         return new Box.Filler(new Dimension(x, y), new Dimension(x, y), new Dimension(maxx, maxy));
     }
 
-    public GBC grid(int x, int y) {
-        gridx = x;
-        gridy = y;
+    /**
+     * Sets the constraint's {@code gridx}, {@code gridy}.
+     * @return This constraint for chaining.
+     * @see #gridx
+     * @see #gridy
+     */
+    public GBC grid(int gridx, int gridy) {
+        this.gridx = gridx;
+        this.gridy = gridy;
         return this;
     }
 
-    public GBC span(int width, int height) {
-        gridwidth = width;
-        gridheight = height;
+    /**
+     * Sets the constraint's {@code gridwidth}, {@code gridheight}.
+     * @return This constraint for chaining.
+     * @see #gridwidth
+     * @see #gridheight
+     */
+    public GBC span(int gridwidth, int gridheight) {
+        this.gridwidth = gridwidth;
+        this.gridheight = gridheight;
         return this;
     }
 
-    public GBC span(int width) {
-        gridwidth = width;
+    /**
+     * Sets the constraint's {@code gridwidth}.
+     * @return This constraint for chaining.
+     * @see #gridwidth
+     */
+    public GBC span(int gridwidth) {
+        this.gridwidth = gridwidth;
         return this;
     }
 
-    public static GBC std(int x, int y) {
-        GBC c = new GBC();
-        c.anchor = WEST;
-        c.gridx = x;
-        c.gridy = y;
-        return c;
+    /**
+     * Create a standard constraint with the {@code gridx}, {@code gridy} set.
+     *
+     * Is equivalent to {@code std().grid(gridx, gridy)}
+     * @return A standard constraint.
+     * @see #std()
+     * @see #grid(int, int)
+     * @see #gridx
+     * @see #gridy
+     */
+    public static GBC std(int gridx, int gridy) {
+        return std().grid(gridx, gridy);
     }
 
 }
diff --git a/src/org/openstreetmap/josm/tools/Geometry.java b/src/org/openstreetmap/josm/tools/Geometry.java
index 3344337..752951f 100644
--- a/src/org/openstreetmap/josm/tools/Geometry.java
+++ b/src/org/openstreetmap/josm/tools/Geometry.java
@@ -343,7 +343,6 @@ public final class Geometry {
         // Convert line from (point, point) form to ax+by=c
         double a1 = p2.getY() - p1.getY();
         double b1 = p1.getX() - p2.getX();
-        // double c1 = 0;
 
         double a2 = p4.getY() - p3.getY();
         double b2 = p3.getX() - p4.getX();
@@ -876,6 +875,10 @@ public final class Geometry {
     /**
      * Tests if the {@code node} is inside the multipolygon {@code multiPolygon}. The nullable argument
      * {@code isOuterWayAMatch} allows to decide if the immediate {@code outer} way of the multipolygon is a match.
+     * @param node node
+     * @param multiPolygon multipolygon
+     * @param isOuterWayAMatch allows to decide if the immediate {@code outer} way of the multipolygon is a match
+     * @return {@code true} if the node is inside the multipolygon
      */
     public static boolean isNodeInsideMultiPolygon(Node node, Relation multiPolygon, Predicate<Way> isOuterWayAMatch) {
         return isPolygonInsideMultiPolygon(Collections.singletonList(node), multiPolygon, isOuterWayAMatch);
@@ -886,6 +889,10 @@ public final class Geometry {
      * {@code isOuterWayAMatch} allows to decide if the immediate {@code outer} way of the multipolygon is a match.
      * <p>
      * If {@code nodes} contains exactly one element, then it is checked whether that one node is inside the multipolygon.
+     * @param nodes nodes forming the polygon
+     * @param multiPolygon multipolygon
+     * @param isOuterWayAMatch allows to decide if the immediate {@code outer} way of the multipolygon is a match
+     * @return {@code true} if the polygon formed by nodes is inside the multipolygon
      */
     public static boolean isPolygonInsideMultiPolygon(List<Node> nodes, Relation multiPolygon, Predicate<Way> isOuterWayAMatch) {
         // Extract outer/inner members from multipolygon
diff --git a/src/org/openstreetmap/josm/tools/I18n.java b/src/org/openstreetmap/josm/tools/I18n.java
index 732eee0..39db0ec 100644
--- a/src/org/openstreetmap/josm/tools/I18n.java
+++ b/src/org/openstreetmap/josm/tools/I18n.java
@@ -170,8 +170,8 @@ public final class I18n {
         "OptionPane.noButtonText",
         "OptionPane.cancelButtonText"
     };
-    private static volatile Map<String, String> strings = null;
-    private static volatile Map<String, String[]> pstrings = null;
+    private static volatile Map<String, String> strings;
+    private static volatile Map<String, String[]> pstrings;
     private static Map<String, PluralMode> languages = new HashMap<>();
 
     /**
@@ -308,13 +308,13 @@ public final class I18n {
             text = text.substring(i+1);
         }
         if (strings != null) {
-            String trans = strings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String trans = strings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null)
                 return trans;
         }
         if (pstrings != null) {
             i = pluralEval(1);
-            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null && trans.length > i)
                 return trans[i];
         }
@@ -338,7 +338,7 @@ public final class I18n {
         }
         if (pstrings != null) {
             i = pluralEval(num);
-            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+"\n"+text);
+            String[] trans = pstrings.get(ctx == null ? text : "_:"+ctx+'\n'+text);
             if (trans != null && trans.length > i)
                 return trans[i];
         }
@@ -352,7 +352,7 @@ public final class I18n {
     }
 
     private static URL getTranslationFile(String lang) {
-        return Main.class.getResource("/data/"+lang.replace("@", "-")+".lang");
+        return Main.class.getResource("/data/"+lang.replace('@', '-')+".lang");
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/ImageProvider.java b/src/org/openstreetmap/josm/tools/ImageProvider.java
index db50872..8f54f2e 100644
--- a/src/org/openstreetmap/josm/tools/ImageProvider.java
+++ b/src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -11,6 +11,7 @@ import java.awt.Graphics2D;
 import java.awt.GraphicsEnvironment;
 import java.awt.Image;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.Toolkit;
 import java.awt.Transparency;
@@ -55,7 +56,14 @@ import javax.swing.ImageIcon;
 import javax.xml.bind.DatatypeConverter;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.gui.mappaint.ElemStyle;
+import org.openstreetmap.josm.gui.mappaint.MapImage;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.NodeElemStyle;
+import org.openstreetmap.josm.gui.mappaint.Range;
+import org.openstreetmap.josm.gui.mappaint.StyleCache.StyleList;
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.w3c.dom.Element;
@@ -94,7 +102,7 @@ public class ImageProvider {
     /**
      * Position of an overlay icon
      */
-    public static enum OverlayPosition {
+    public enum OverlayPosition {
         /** North west */
         NORTHWEST,
         /** North east */
@@ -108,7 +116,7 @@ public class ImageProvider {
     /**
      * Supported image types
      */
-    public static enum ImageType {
+    public enum ImageType {
         /** Scalable vector graphics */
         SVG,
         /** Everything else, e.g. png, gif (must be supported by Java) */
@@ -119,7 +127,7 @@ public class ImageProvider {
      * Supported image sizes
      * @since 7687
      */
-    public static enum ImageSizes {
+    public enum ImageSizes {
         /** SMALL_ICON value of on Action */
         SMALLICON,
         /** LARGE_ICON_KEY value of on Action */
@@ -183,7 +191,7 @@ public class ImageProvider {
     /** list of class loaders to take images from */
     protected Collection<ClassLoader> additionalClassLoaders;
     /** ordered list of overlay images */
-    protected List<ImageOverlay> overlayInfo = null;
+    protected List<ImageOverlay> overlayInfo;
 
     private static SVGUniverse svgUniverse;
 
@@ -719,7 +727,7 @@ public class ImageProvider {
             if (subdir == null) {
                 subdir = "";
             } else if (!subdir.isEmpty() && !subdir.endsWith("/")) {
-                subdir += "/";
+                subdir += '/';
             }
             String[] extensions;
             if (name.indexOf('.') != -1) {
@@ -741,9 +749,9 @@ public class ImageProvider {
                     String cacheName = fullName;
                     /* cache separately */
                     if (dirs != null && !dirs.isEmpty()) {
-                        cacheName = "id:" + id + ":" + fullName;
+                        cacheName = "id:" + id + ':' + fullName;
                         if (archive != null) {
-                            cacheName += ":" + archive.getName();
+                            cacheName += ':' + archive.getName();
                         }
                     }
 
@@ -837,7 +845,7 @@ public class ImageProvider {
                 try {
                     bytes = Utils.decodeUrl(data).getBytes(StandardCharsets.UTF_8);
                 } catch (IllegalArgumentException ex) {
-                    Main.warn("Unable to decode URL data part: "+ex.getMessage() + " (" + data + ")");
+                    Main.warn("Unable to decode URL data part: "+ex.getMessage() + " (" + data + ')');
                     return null;
                 }
             }
@@ -897,7 +905,7 @@ public class ImageProvider {
                 }
             } else {
                 final String fn_md5 = Utils.md5Hex(fn);
-                url = b + fn_md5.substring(0, 1) + "/" + fn_md5.substring(0, 2) + "/" + fn;
+                url = b + fn_md5.substring(0, 1) + '/' + fn_md5.substring(0, 2) + "/" + fn;
             }
             result = getIfAvailableHttp(url, type);
             if (result != null) {
@@ -921,7 +929,7 @@ public class ImageProvider {
             if (inArchiveDir == null || ".".equals(inArchiveDir)) {
                 inArchiveDir = "";
             } else if (!inArchiveDir.isEmpty()) {
-                inArchiveDir += "/";
+                inArchiveDir += '/';
             }
             String entryName = inArchiveDir + fullName;
             ZipEntry entry = zipFile.getEntry(entryName);
@@ -1074,7 +1082,7 @@ public class ImageProvider {
     private static class SAXReturnException extends SAXException {
         private final String result;
 
-        public SAXReturnException(String result) {
+        SAXReturnException(String result) {
             this.result = result;
         }
 
@@ -1141,7 +1149,7 @@ public class ImageProvider {
                     .setMaxSize(ImageSizes.CURSOROVERLAY))).get();
         }
         if (GraphicsEnvironment.isHeadless()) {
-            Main.warn("Cursors are not available in headless mode. Returning null for '"+name+"'");
+            Main.warn("Cursors are not available in headless mode. Returning null for '"+name+'\'');
             return null;
         }
         return Toolkit.getDefaultToolkit().createCustomCursor(img.getImage(),
@@ -1268,6 +1276,57 @@ public class ImageProvider {
     }
 
     /**
+     * @param primitive Object for which an icon shall be fetched. The icon is chosen based on tags.
+     * @param iconSize Target size of icon. Icon is padded if required.
+     * @return Icon for {@code primitive} that fits in cell.
+     * @since 8903
+     */
+    public static ImageIcon getPadded(OsmPrimitive primitive, Rectangle iconSize) {
+        // Check if the current styles have special icon for tagged nodes.
+        if (primitive instanceof org.openstreetmap.josm.data.osm.Node) {
+            Pair<StyleList, Range> nodeStyles = MapPaintStyles.getStyles().generateStyles(primitive, 100, false);
+            for (ElemStyle style : nodeStyles.a) {
+                if (style instanceof NodeElemStyle) {
+                    NodeElemStyle nodeStyle = (NodeElemStyle) style;
+                    MapImage icon = nodeStyle.mapImage;
+                    if (icon != null) {
+                        int backgroundWidth = iconSize.height;
+                        int backgroundHeight = iconSize.height;
+                        int iconWidth = icon.getWidth();
+                        int iconHeight = icon.getHeight();
+                        BufferedImage image = new BufferedImage(backgroundWidth, backgroundHeight,
+                                BufferedImage.TYPE_INT_ARGB);
+                        double scaleFactor = Math.min(backgroundWidth / (double) iconWidth, backgroundHeight
+                                / (double) iconHeight);
+                        BufferedImage iconImage = icon.getImage(false);
+                        Image scaledIcon;
+                        final int scaledWidth;
+                        final int scaledHeight;
+                        if (scaleFactor < 1) {
+                            // Scale icon such that it fits on background.
+                            scaledWidth = (int) (iconWidth * scaleFactor);
+                            scaledHeight = (int) (iconHeight * scaleFactor);
+                            scaledIcon = iconImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
+                        } else {
+                            // Use original size, don't upscale.
+                            scaledWidth = iconWidth;
+                            scaledHeight = iconHeight;
+                            scaledIcon = iconImage;
+                        }
+                        image.getGraphics().drawImage(scaledIcon, (backgroundWidth - scaledWidth) / 2,
+                                (backgroundHeight - scaledHeight) / 2, null);
+
+                        return new ImageIcon(image);
+                    }
+                }
+            }
+        }
+
+        // Use generic default icon.
+        return ImageProvider.get(primitive.getDisplayType());
+    }
+
+    /**
      * Constructs an image from the given SVG data.
      * @param svg the SVG data
      * @param dim the desired image dimension
diff --git a/src/org/openstreetmap/josm/tools/ImageResource.java b/src/org/openstreetmap/josm/tools/ImageResource.java
index adec828..6e30c94 100644
--- a/src/org/openstreetmap/josm/tools/ImageResource.java
+++ b/src/org/openstreetmap/josm/tools/ImageResource.java
@@ -39,8 +39,8 @@ public class ImageResource {
     /**
      * ordered list of overlay images
      */
-    protected List<ImageOverlay> overlayInfo = null;
-    private Image baseImage = null;
+    protected List<ImageOverlay> overlayInfo;
+    private Image baseImage;
 
     /**
      * Constructs a new {@code ImageResource} from an image.
diff --git a/src/org/openstreetmap/josm/tools/LanguageInfo.java b/src/org/openstreetmap/josm/tools/LanguageInfo.java
index 83c88de..5a2a15b 100644
--- a/src/org/openstreetmap/josm/tools/LanguageInfo.java
+++ b/src/org/openstreetmap/josm/tools/LanguageInfo.java
@@ -53,9 +53,9 @@ public final class LanguageInfo {
             return null;
         } else if (code.matches(".+ at .+")) {
           return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1, 2)
-          + "-" + code.substring(3, 4).toUpperCase(Locale.ENGLISH) + code.substring(4) + ":";
+          + '-' + code.substring(3, 4).toUpperCase(Locale.ENGLISH) + code.substring(4) + ':';
         }
-        return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1) + ":";
+        return code.substring(0, 1).toUpperCase(Locale.ENGLISH) + code.substring(1) + ':';
     }
 
     /**
@@ -139,10 +139,6 @@ public final class LanguageInfo {
      * @since 8232
      */
     public static String getDisplayName(Locale locale) {
-        /*String full = locale.toString();
-        if ("ca__valencia".equals(full))
-            return t_r_c("language", "Valencian");*/
-
         return locale.getDisplayName();
     }
 
@@ -155,10 +151,10 @@ public final class LanguageInfo {
      * @return the resulting locale
      */
     public static Locale getLocale(String localeName) {
-        int country = localeName.indexOf("_");
-        int variant = localeName.indexOf("@");
+        int country = localeName.indexOf('_');
+        int variant = localeName.indexOf('@');
         if (variant < 0 && country >= 0)
-            variant = localeName.indexOf("_", country+1);
+            variant = localeName.indexOf('_', country+1);
         Locale l;
         if (variant > 0 && country > 0) {
             l = new Locale(localeName.substring(0, country), localeName.substring(country+1, variant), localeName.substring(variant + 1));
@@ -197,8 +193,8 @@ public final class LanguageInfo {
      */
     public static String getLanguageCodeXML() {
         String code = getJOSMLocaleCode();
-        code = code.replace("@", "-");
-        return code+".";
+        code = code.replace('@', '-');
+        return code+'.';
     }
 
     /**
@@ -209,8 +205,8 @@ public final class LanguageInfo {
      */
     public static String getLanguageCodeManifest() {
         String code = getJOSMLocaleCode();
-        code = code.replace("@", "-");
-        return code+"_";
+        code = code.replace('@', '-');
+        return code+'_';
     }
 
     /**
@@ -238,11 +234,11 @@ public final class LanguageInfo {
             c = null;
         if (v != null && !v.isEmpty()) {
             if (c != null)
-                list.add(lang+"_"+c+"@"+v);
-            list.add(lang+"@"+v);
+                list.add(lang+'_'+c+'@'+v);
+            list.add(lang+'@'+v);
         }
         if (c != null)
-            list.add(lang+"_"+c);
+            list.add(lang+'_'+c);
         list.add(lang);
         return list;
     }
diff --git a/src/org/openstreetmap/josm/tools/MultiMap.java b/src/org/openstreetmap/josm/tools/MultiMap.java
index a53879d..aede11b 100644
--- a/src/org/openstreetmap/josm/tools/MultiMap.java
+++ b/src/org/openstreetmap/josm/tools/MultiMap.java
@@ -231,8 +231,8 @@ public class MultiMap<A, B> {
     public String toString() {
         List<String> entries = new ArrayList<>(map.size());
         for (Entry<A, Set<B>> entry : map.entrySet()) {
-            entries.add(entry.getKey() + "->{" + Utils.join(",", entry.getValue()) + "}");
+            entries.add(entry.getKey() + "->{" + Utils.join(",", entry.getValue()) + '}');
         }
-        return "(" + Utils.join(",", entries) + ")";
+        return '(' + Utils.join(",", entries) + ')';
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
index edbb2ad..0e78588 100644
--- a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
+++ b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
@@ -207,9 +207,9 @@ public final class MultikeyActionsHandler {
         return instance;
     }
 
-    private String formatMenuText(KeyStroke keyStroke, String index, String description) {
-        String shortcutText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers()) + "+"
-                + KeyEvent.getKeyText(keyStroke.getKeyCode()) + "," + index;
+    private static String formatMenuText(KeyStroke keyStroke, String index, String description) {
+        String shortcutText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers()) + '+'
+                + KeyEvent.getKeyText(keyStroke.getKeyCode()) + ',' + index;
 
         return "<html><i>" + shortcutText + "</i>    " + description;
     }
diff --git a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
index 81e6ac5..7c983fd 100644
--- a/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
+++ b/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
@@ -117,7 +117,7 @@ public final class OsmUrlToBounds {
     private static double parseDouble(Map<String, String> map, String key) {
         if (map.containsKey(key))
             return Double.parseDouble(map.get(key));
-        return Double.parseDouble(map.get("m"+key));
+        return Double.parseDouble(map.get('m'+key));
     }
 
     private static final char[] SHORTLINK_CHARS = {
@@ -295,6 +295,6 @@ public final class OsmUrlToBounds {
         lat /= decimals;
         double lon = Math.round(dlon * decimals);
         lon /= decimals;
-        return Main.getOSMWebsite() + "/#map="+zoom+"/"+lat+"/"+lon;
+        return Main.getOSMWebsite() + "/#map="+zoom+'/'+lat+'/'+lon;
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
index e8ee1fb..456d705 100644
--- a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
+++ b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
@@ -47,7 +47,6 @@ public final class OverpassTurboQueryWizard {
 
         try (final Reader reader = new InputStreamReader(
                 getClass().getResourceAsStream("/data/overpass-turbo-ffs.js"), StandardCharsets.UTF_8)) {
-            //engine.eval("var turbo = {ffs: {noPresets: true}};");
             engine.eval("var console = {log: function(){}};");
             engine.eval(reader);
             engine.eval("var construct_query = turbo.ffs().construct_query;");
diff --git a/src/org/openstreetmap/josm/tools/Pair.java b/src/org/openstreetmap/josm/tools/Pair.java
index 0d003dd..17758a2 100644
--- a/src/org/openstreetmap/josm/tools/Pair.java
+++ b/src/org/openstreetmap/josm/tools/Pair.java
@@ -63,7 +63,7 @@ public final class Pair<A, B> {
 
     @Override
     public String toString() {
-        return "<"+a+","+b+">";
+        return "<"+a+','+b+'>';
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
index 74e6075..b0d9c92 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
@@ -66,6 +66,11 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements PlatformHook
             // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows.
             Main.warn("Failed to register with OSX: " + ex);
         }
+        // Invite users to install Java 8 if they are still with Java 7
+        String java = System.getProperty("java.version");
+        if (java != null && java.startsWith("1.7")) {
+            askUpdateJava(java);
+        }
     }
 
     /**
@@ -288,25 +293,25 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements PlatformHook
         if (lafid.contains("Mac") || lafid.contains("Aqua")) {
             canHtml = false;
         }
-        String result = "";
+        StringBuilder result = new StringBuilder();
         if (canHtml) {
-            result += "<html>";
+            result.append("<html>");
         }
-        result += name;
+        result.append(name);
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += " ";
+            result.append(' ');
             if (canHtml) {
-                result += "<font size='-2'>";
+                result.append("<font size='-2'>");
             }
-            result += "("+sc.getKeyText()+")";
+            result.append('(').append(sc.getKeyText()).append(')');
             if (canHtml) {
-                result += "</font>";
+                result.append("</font>");
             }
         }
         if (canHtml) {
-            result += " </html>";
+            result.append(" </html>");
         }
-        return result;
+        return result.toString();
     }
 
     @Override
@@ -322,7 +327,7 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements PlatformHook
 
     @Override
     public String getOSDescription() {
-        return System.getProperty("os.name") + " " + System.getProperty("os.version");
+        return System.getProperty("os.name") + ' ' + System.getProperty("os.version");
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
index 452a938..bd0980f 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
@@ -148,16 +148,15 @@ public class PlatformHookUnixoid implements PlatformHook {
      */
     @Override
     public String makeTooltip(String name, Shortcut sc) {
-        String result = "";
-        result += "<html>";
-        result += name;
+        StringBuilder result = new StringBuilder();
+        result.append("<html>").append(name);
         if (sc != null && !sc.getKeyText().isEmpty()) {
-            result += " ";
-            result += "<font size='-2'>";
-            result += "("+sc.getKeyText()+")";
-            result += "</font>";
+            result.append(' ')
+                  .append("<font size='-2'>")
+                  .append('(').append(sc.getKeyText()).append(')')
+                  .append("</font>");
         }
-        return result + " </html>";
+        return result.append(" </html>").toString();
     }
 
     @Override
@@ -209,7 +208,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                     }
                     String version = Utils.execOutput(Arrays.asList(args));
                     if (version != null && !version.contains("not installed")) {
-                        return packageName + ":" + version;
+                        return packageName + ':' + version;
                     }
                 }
             }
@@ -335,7 +334,7 @@ public class PlatformHookUnixoid implements PlatformHook {
 
         @Override public String toString() {
             return "ReleaseInfo [path=" + path + ", descriptionField=" + descriptionField +
-                    ", idField=" + idField + ", releaseField=" + releaseField + "]";
+                    ", idField=" + idField + ", releaseField=" + releaseField + ']';
         }
 
         /**
@@ -371,7 +370,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                         }
                         // If no description has been found, try to rebuild it with "id" + "release" (i.e. "name" + "version")
                         if (result == null && id != null && release != null) {
-                            result = id + " " + release;
+                            result = id + ' ' + release;
                         }
                     } catch (IOException e) {
                         // Ignore
@@ -392,10 +391,11 @@ public class PlatformHookUnixoid implements PlatformHook {
     }
 
     protected void askUpdateJava(String version) {
-        askUpdateJava(version, "https://www.java.com/download");
+        if (!GraphicsEnvironment.isHeadless()) {
+            askUpdateJava(version, "https://www.java.com/download");
+        }
     }
 
-    // Method kept because strings have already been translated. To enable for Java 8 migration somewhere in 2016
     protected void askUpdateJava(final String version, final String url) {
         GuiHelper.runInEDTAndWait(new Runnable() {
             @Override
@@ -403,24 +403,25 @@ public class PlatformHookUnixoid implements PlatformHook {
                 ExtendedDialog ed = new ExtendedDialog(
                         Main.parent,
                         tr("Outdated Java version"),
-                        new String[]{tr("Update Java"), tr("Cancel")});
+                        new String[]{tr("OK"), tr("Update Java"), tr("Cancel")});
                 // Check if the dialog has not already been permanently hidden by user
                 if (!ed.toggleEnable("askUpdateJava8").toggleCheckState()) {
-                    ed.setButtonIcons(new String[]{"java", "cancel"}).setCancelButton(2);
+                    ed.setButtonIcons(new String[]{"ok", "java", "cancel"}).setCancelButton(3);
                     ed.setMinimumSize(new Dimension(480, 300));
                     ed.setIcon(JOptionPane.WARNING_MESSAGE);
-                    String content = tr("You are running version {0} of Java.", "<b>"+version+"</b>")+"<br><br>";
+                    StringBuilder content = new StringBuilder(tr("You are running version {0} of Java.", "<b>"+version+"</b>"))
+                            .append("<br><br>");
                     if ("Sun Microsystems Inc.".equals(System.getProperty("java.vendor")) && !isOpenJDK()) {
-                        content += "<b>"+tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
-                                "Oracle", tr("April 2015"))+"</b><br><br>";
+                        content.append("<b>").append(tr("This version is no longer supported by {0} since {1} and is not recommended for use.",
+                                "Oracle", tr("April 2015"))).append("</b><br><br>");
                     }
-                    content += "<b>" +
-                            tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", "8")
-                            + "</b><br><br>" +
-                            tr("Would you like to update now ?");
-                    ed.setContent(content);
+                    content.append("<b>")
+                           .append(tr("JOSM will soon stop working with this version; we highly recommend you to update to Java {0}.", "8"))
+                           .append("</b><br><br>")
+                           .append(tr("Would you like to update now ?"));
+                    ed.setContent(content.toString());
 
-                    if (ed.showDialog().getValue() == 1) {
+                    if (ed.showDialog().getValue() == 2) {
                         try {
                             openUrl(url);
                         } catch (IOException e) {
@@ -532,27 +533,27 @@ public class PlatformHookUnixoid implements PlatformHook {
                     if (prevValue != null && !prevValue.equals(value)) {
                         Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
-                    w.append(key + "=" + value + "\n");
+                    w.append(key + '=' + value + '\n');
                 }
                 w.append('\n');
                 for (FontEntry entry: extras) {
                     if ("".equals(entry.name) || "".equals(entry.file)) {
                         continue;
                     }
-                    String key = "filename." + entry.name.replace(" ", "_");
+                    String key = "filename." + entry.name.replace(' ', '_');
                     String value = entry.file;
                     String prevValue = props.getProperty(key);
                     if (prevValue != null && !prevValue.equals(value)) {
                         Main.warn("extended font config - overriding ''{0}={1}'' with ''{2}''", key, prevValue, value);
                     }
-                    w.append(key + "=" + value + "\n");
+                    w.append(key + '=' + value + '\n');
                 }
                 w.append('\n');
                 String fallback = props.getProperty("sequence.fallback");
                 if (fallback != null) {
-                    w.append("sequence.fallback=" + fallback + "," + Utils.join(",", allCharSubsets) + "\n");
+                    w.append("sequence.fallback=" + fallback + ',' + Utils.join(",", allCharSubsets) + '\n');
                 } else {
-                    w.append("sequence.fallback=" + Utils.join(",", allCharSubsets) + "\n");
+                    w.append("sequence.fallback=" + Utils.join(",", allCharSubsets) + '\n');
                 }
             }
             Utils.updateSystemProperty("sun.awt.fontconfig", fontconfigFile.toString());
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
index 6e6e9f0..84d268c 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
@@ -61,6 +61,15 @@ import org.openstreetmap.josm.Main;
   */
 public class PlatformHookWindows extends PlatformHookUnixoid implements PlatformHook {
 
+    @Override
+    public void startupHook() {
+        // Invite users to install Java 8 if they are still with Java 7
+        String version = System.getProperty("java.version");
+        if (version != null && version.startsWith("1.7")) {
+            askUpdateJava(version);
+        }
+    }
+
     private static final byte[] INSECURE_PUBLIC_KEY = new byte[] {
         0x30, (byte) 0x82, 0x1, 0x22, 0x30, 0xd, 0x6, 0x9, 0x2a, (byte) 0x86, 0x48,
         (byte) 0x86, (byte) 0xf7, 0xd, 0x1, 0x1, 0x1, 0x5, 0x0, 0x3, (byte) 0x82, 0x1, 0xf, 0x0,
@@ -186,7 +195,7 @@ public class PlatformHookWindows extends PlatformHookUnixoid implements Platform
 
     @Override
     public String getOSDescription() {
-        return Utils.strip(System.getProperty("os.name")) + " " +
+        return Utils.strip(System.getProperty("os.name")) + ' ' +
                 ((System.getenv("ProgramFiles(x86)") == null) ? "32" : "64") + "-Bit";
     }
 
diff --git a/src/org/openstreetmap/josm/tools/Predicates.java b/src/org/openstreetmap/josm/tools/Predicates.java
index 97ec22c..b01df0d 100644
--- a/src/org/openstreetmap/josm/tools/Predicates.java
+++ b/src/org/openstreetmap/josm/tools/Predicates.java
@@ -17,6 +17,8 @@ public final class Predicates {
 
     /**
      * Returns the negation of {@code predicate}.
+     * @param predicate the predicate to negate
+     * @return the negation of {@code predicate}
      */
     public static <T> Predicate<T> not(final Predicate<T> predicate) {
         return new Predicate<T>() {
@@ -29,6 +31,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link Objects#equals}.
+     * @param ref the reference object
+     * @return a {@link Predicate} executing {@link Objects#equals}
      */
     public static <T> Predicate<T> equalTo(final T ref) {
         return new Predicate<T>() {
@@ -41,6 +45,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link Pattern#matcher(CharSequence)} and {@link java.util.regex.Matcher#matches}.
+     * @param pattern the pattern
+     * @return a {@link Predicate} executing {@link Pattern#matcher(CharSequence)} and {@link java.util.regex.Matcher#matches}
      */
     public static Predicate<String> stringMatchesPattern(final Pattern pattern) {
         return new Predicate<String>() {
@@ -53,6 +59,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link Pattern#matcher(CharSequence)} and {@link java.util.regex.Matcher#find}.
+     * @param pattern the pattern
+     * @return a {@link Predicate} executing {@link Pattern#matcher(CharSequence)} and {@link java.util.regex.Matcher#find}
      */
     public static Predicate<String> stringContainsPattern(final Pattern pattern) {
         return new Predicate<String>() {
@@ -65,6 +73,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link String#contains(CharSequence)}.
+     * @param pattern the pattern
+     * @return a {@link Predicate} executing {@link String#contains(CharSequence)}
      */
     public static Predicate<String> stringContains(final String pattern) {
         return new Predicate<String>() {
@@ -77,6 +87,9 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link OsmPrimitive#hasTag(String, String...)}.
+     * @param key the key forming the tag
+     * @param values one or many values forming the tag
+     * @return a {@link Predicate} executing {@link OsmPrimitive#hasTag(String, String...)}
      */
     public static Predicate<OsmPrimitive> hasTag(final String key, final String... values) {
         return new Predicate<OsmPrimitive>() {
@@ -89,6 +102,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link OsmPrimitive#hasKey(String)}.
+     * @param key the key
+     * @return a {@link Predicate} executing {@link OsmPrimitive#hasKey(String)}
      */
     public static Predicate<OsmPrimitive> hasKey(final String key) {
         return new Predicate<OsmPrimitive>() {
@@ -101,6 +116,8 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} executing {@link Collection#contains(Object)}.
+     * @param target collection
+     * @return a {@link Predicate} executing {@link Collection#contains(Object)}
      */
     public static <T> Predicate<T> inCollection(final Collection<? extends T> target) {
         return new Predicate<T>() {
@@ -113,6 +130,7 @@ public final class Predicates {
 
     /**
      * Returns a {@link Predicate} testing whether objects are {@code null}.
+     * @return a {@link Predicate} testing whether objects are {@code null}
      */
     public static <T> Predicate<T> isNull() {
         return new Predicate<T>() {
diff --git a/src/org/openstreetmap/josm/tools/Shortcut.java b/src/org/openstreetmap/josm/tools/Shortcut.java
index 121ef61..9d451b2 100644
--- a/src/org/openstreetmap/josm/tools/Shortcut.java
+++ b/src/org/openstreetmap/josm/tools/Shortcut.java
@@ -151,6 +151,7 @@ public final class Shortcut {
 
     /**
      * Use this to register the shortcut with Swing
+     * @return the key stroke
      */
     public KeyStroke getKeyStroke() {
         if (assignedModifier != -1)
@@ -232,14 +233,15 @@ public final class Shortcut {
     }
 
     /**
-     * use this to get a human readable text for your shortcut
+     * Returns a human readable text for the shortcut.
+     * @return a human readable text for the shortcut
      */
     public String getKeyText() {
         KeyStroke keyStroke = getKeyStroke();
         if (keyStroke == null) return "";
         String modifText = KeyEvent.getKeyModifiersText(keyStroke.getModifiers());
         if ("".equals(modifText)) return KeyEvent.getKeyText(keyStroke.getKeyCode());
-        return modifText + "+" + KeyEvent.getKeyText(keyStroke.getKeyCode());
+        return modifText + '+' + KeyEvent.getKeyText(keyStroke.getKeyCode());
     }
 
     @Override
@@ -269,7 +271,8 @@ public final class Shortcut {
     }
 
     /**
-     * FOR PREF PANE ONLY
+     * Returns a list of all shortcuts.
+     * @return a list of all shortcuts
      */
     public static List<Shortcut> listAll() {
         List<Shortcut> l = new ArrayList<>();
@@ -310,7 +313,7 @@ public final class Shortcut {
                                  KeyEvent.VK_F9, KeyEvent.VK_F10, KeyEvent.VK_F11, KeyEvent.VK_F12};
 
     // bootstrap
-    private static boolean initdone = false;
+    private static boolean initdone;
     private static void doInit() {
         if (initdone) return;
         initdone = true;
@@ -383,9 +386,15 @@ public final class Shortcut {
     }
 
     /**
-     * FOR PLATFORMHOOK USE ONLY
-     *
+     * FOR PLATFORMHOOK USE ONLY.
+     * <p>
      * This registers a system shortcut. See PlatformHook for details.
+     * @param shortText an ID. re-use a {@code "system:*"} ID if possible, else use something unique.
+     * @param longText this will be displayed in the shortcut preferences dialog. Better
+     * use something the user will recognize...
+     * @param key the key. Use a {@link KeyEvent KeyEvent.VK_*} constant here.
+     * @param modifier the modifier. Use a {@link KeyEvent KeyEvent.*_MASK} constant here.
+     * @return the system shortcut
      */
     public static Shortcut registerSystemShortcut(String shortText, String longText, int key, int modifier) {
         if (shortcuts.containsKey(shortText))
@@ -415,6 +424,7 @@ public final class Shortcut {
      * @param requestedKey the key you'd prefer. Use a {@link KeyEvent KeyEvent.VK_*} constant here.
      * @param requestedGroup the group this shortcut fits best. This will determine the
      * modifiers your shortcut will get assigned. Use the constants defined above.
+     * @return the shortcut
      */
     public static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup) {
         return registerShortcut(shortText, longText, requestedKey, requestedGroup, null);
@@ -423,19 +433,20 @@ public final class Shortcut {
     // and now the workhorse. same parameters as above, just one more
     private static Shortcut registerShortcut(String shortText, String longText, int requestedKey, int requestedGroup, Integer modifier) {
         doInit();
-        Integer defaultModifier = findModifier(requestedGroup, modifier);
         if (shortcuts.containsKey(shortText)) { // a re-register? maybe a sc already read from the preferences?
             Shortcut sc = shortcuts.get(shortText);
             sc.setLongText(longText); // or set by the platformHook, in this case the original longText doesn't match the real action
             sc.saveDefault();
             return sc;
         }
+        Integer defaultModifier = findModifier(requestedGroup, modifier);
         Shortcut conflict = findShortcut(requestedKey, defaultModifier);
         if (conflict != null) {
             if (Main.isPlatformOsx()) {
                 // Try to reassign Meta to Ctrl
                 int newmodifier = findNewOsxModifier(requestedGroup);
                 if (findShortcut(requestedKey, newmodifier) == null) {
+                    Main.info("Reassigning OSX shortcut '" + shortText + "' from Meta to Ctrl because of conflict with " + conflict);
                     return reassignShortcut(shortText, longText, requestedKey, conflict, requestedGroup, requestedKey, newmodifier);
                 }
             }
@@ -443,6 +454,8 @@ public final class Shortcut {
                 for (int k : keys) {
                     int newmodifier = getGroupModifier(m);
                     if (findShortcut(k, newmodifier) == null) {
+                        Main.info("Reassigning shortcut '" + shortText + "' from " + modifier + " to " + newmodifier +
+                                " because of conflict with " + conflict);
                         return reassignShortcut(shortText, longText, requestedKey, conflict, m, k, newmodifier);
                     }
                 }
diff --git a/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java b/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
index fcb621e..b94cb18 100644
--- a/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
+++ b/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
@@ -26,7 +26,7 @@ public class SubclassFilteredCollection<S, T extends S> extends AbstractCollecti
         private final Iterator<? extends S> iterator;
         private S current;
 
-        public FilterIterator(Iterator<? extends S> iterator) {
+        FilterIterator(Iterator<? extends S> iterator) {
             this.iterator = iterator;
         }
 
diff --git a/src/org/openstreetmap/josm/tools/TextTagParser.java b/src/org/openstreetmap/josm/tools/TextTagParser.java
index 0e97e55..e20796f 100644
--- a/src/org/openstreetmap/josm/tools/TextTagParser.java
+++ b/src/org/openstreetmap/josm/tools/TextTagParser.java
@@ -39,8 +39,8 @@ public final class TextTagParser {
     }
 
     public static class TextAnalyzer {
-        private boolean quotesStarted = false;
-        private boolean esc = false;
+        private boolean quotesStarted;
+        private boolean esc;
         private StringBuilder s = new StringBuilder(200);
         private int pos;
         private String data;
@@ -54,8 +54,9 @@ public final class TextTagParser {
 
         /**
          * Read tags from "Free format"
+         * @return map of tags
          */
-        Map<String, String>  getFreeParsedTags() {
+        private Map<String, String> getFreeParsedTags() {
             String k, v;
             Map<String, String> tags = new HashMap<>();
 
@@ -167,6 +168,7 @@ public final class TextTagParser {
      * @param splitRegex - text is splitted into parts with this delimiter
      * @param tagRegex - each part is matched against this regex
      * @param unescapeTextInQuotes - if true, matched tag and value will be analyzed more thoroughly
+     * @return map of tags
      */
     public static Map<String, String> readTagsByRegexp(String text, String splitRegex, String tagRegex, boolean unescapeTextInQuotes) {
          String[] lines = text.split(splitRegex);
@@ -257,7 +259,7 @@ public final class TextTagParser {
             String key = entry.getKey();
             String value = entry.getValue();
             if (key.length() > MAX_KEY_LENGTH) {
-                r = warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+"="+value, "tags.paste.keytoolong");
+                r = warning(tr("Key is too long (max {0} characters):", MAX_KEY_LENGTH), key+'='+value, "tags.paste.keytoolong");
                 if (r == 2 || r == 3) return false; if (r == 4) return true;
             }
             if (!key.matches(KEY_PATTERN)) {
diff --git a/src/org/openstreetmap/josm/tools/UserCancelException.java b/src/org/openstreetmap/josm/tools/UserCancelException.java
new file mode 100644
index 0000000..dfdd876
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/UserCancelException.java
@@ -0,0 +1,47 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+/**
+ * Exception thrown when an operation is canceled by user.
+ * @since 1001 (creation)
+ * @since 8919 (move into this package)
+ */
+public class UserCancelException extends Exception {
+
+    /**
+     * Constructs a new {@code UserCancelException}.
+     */
+    public UserCancelException() {
+        super();
+    }
+
+    /**
+     * Constructs a new {@code UserCancelException} with the specified detail message and cause.
+     *
+     * @param  message the detail message (which is saved for later retrieval by the {@link #getMessage()} method).
+     * @param  cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
+     *         (A <tt>null</tt> value is permitted, and indicates that the cause is nonexistent or unknown.)
+     */
+    public UserCancelException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructs a new {@code UserCancelException} with the specified detail message.
+     *
+     * @param  message the detail message (which is saved for later retrieval by the {@link #getMessage()} method).
+     */
+    public UserCancelException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructs a new {@code UserCancelException} with the specified cause.
+     *
+     * @param  cause the cause (which is saved for later retrieval by the {@link #getCause()} method).
+     *         (A <tt>null</tt> value is permitted, and indicates that the cause is nonexistent or unknown.)
+     */
+    public UserCancelException(Throwable cause) {
+        super(cause);
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/Utils.java b/src/org/openstreetmap/josm/tools/Utils.java
index 3c726d4..c4a887e 100644
--- a/src/org/openstreetmap/josm/tools/Utils.java
+++ b/src/org/openstreetmap/josm/tools/Utils.java
@@ -87,7 +87,10 @@ public final class Utils {
     private static char[] DEFAULT_STRIP = {'\u200B', '\uFEFF'};
 
     /**
-     * Tests whether {@code predicate} applies to at least one elements from {@code collection}.
+     * Tests whether {@code predicate} applies to at least one element from {@code collection}.
+     * @param collection the collection
+     * @param predicate the predicate
+     * @return {@code true} if {@code predicate} applies to at least one element from {@code collection}
      */
     public static <T> boolean exists(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         for (T item : collection) {
@@ -99,6 +102,9 @@ public final class Utils {
 
     /**
      * Tests whether {@code predicate} applies to all elements from {@code collection}.
+     * @param collection the collection
+     * @param predicate the predicate
+     * @return {@code true} if {@code predicate} applies to all elements from {@code collection}
      */
     public static <T> boolean forAll(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         return !exists(collection, Predicates.not(predicate));
@@ -151,6 +157,9 @@ public final class Utils {
     /**
      * Filter a collection by (sub)class.
      * This is an efficient read-only implementation.
+     * @param collection the collection
+     * @param klass the (sub)class
+     * @return a read-only filtered collection
      */
     public static <S, T extends S> SubclassFilteredCollection<S, T> filteredCollection(Collection<S> collection, final Class<T> klass) {
         return new SubclassFilteredCollection<>(collection, new Predicate<S>() {
@@ -221,7 +230,10 @@ public final class Utils {
     }
 
     /**
-     * return the modulus in the range [0, n)
+     * Return the modulus in the range [0, n)
+     * @param a dividend
+     * @param n divisor
+     * @return modulo (remainder of the Euclidian division of a by n)
      */
     public static int mod(int a, int n) {
         if (n <= 0)
@@ -277,6 +289,8 @@ public final class Utils {
     /**
      * convert Color to String
      * (Color.toString() omits alpha value)
+     * @param c the color
+     * @return the String representation, including alpha
      */
     public static String toString(Color c) {
         if (c == null)
@@ -304,6 +318,8 @@ public final class Utils {
     /**
      * convert integer range 0..255 to float range 0 <= x <= 1
      * when dealing with colors and color alpha value
+     * @param val integer value
+     * @return corresponding float value in range 0 <= x <= 1
      */
     public static Float color_int2float(Integer val) {
         if (val == null)
@@ -935,6 +951,7 @@ public final class Utils {
      *         {@link Character#isWhitespace(char)} and {@link Character#isSpaceChar(char)}.
      * @see <a href="http://closingbraces.net/2008/11/11/javastringtrim/">Java’s String.trim has a strange idea of whitespace</a>
      * @see <a href="https://bugs.openjdk.java.net/browse/JDK-4080617">JDK bug 4080617</a>
+     * @see <a href="https://bugs.openjdk.java.net/browse/JDK-7190385">JDK bug 7190385</a>
      * @since 5772
      */
     public static String strip(final String str) {
@@ -1207,7 +1224,7 @@ public final class Utils {
         } else {
             final List<String> lines = Arrays.asList(s.split("\\n"));
             if (lines.size() > maxLines) {
-                return join("\n", lines.subList(0, maxLines - 1)) + "\n" + "...";
+                return join("\n", lines.subList(0, maxLines - 1)) + "\n...";
             } else {
                 return s;
             }
@@ -1302,7 +1319,6 @@ public final class Utils {
      * @return a new {@link ThreadFactory}
      */
     public static ThreadFactory newThreadFactory(final String nameFormat, final int threadPriority) {
-        final String ignore = String.format(Locale.ENGLISH, nameFormat, 0); // fail fast
         return new ThreadFactory() {
             final AtomicLong count = new AtomicLong(0);
             @Override
@@ -1340,7 +1356,7 @@ public final class Utils {
         if (value != null) {
             String old = System.setProperty(key, value);
             if (!key.toLowerCase(Locale.ENGLISH).contains("password")) {
-                Main.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + "'");
+                Main.debug("System property '" + key + "' set to '" + value + "'. Old value was '" + old + '\'');
             } else {
                 Main.debug("System property '" + key + "' changed.");
             }
@@ -1394,9 +1410,9 @@ public final class Utils {
      * @since 8404
      */
     public static boolean hasExtension(String filename, String... extensions) {
-        String name = filename.toLowerCase(Locale.ENGLISH);
+        String name = filename.toLowerCase(Locale.ENGLISH).replace("?format=raw", "");
         for (String ext : extensions) {
-            if (name.endsWith("." + ext.toLowerCase(Locale.ENGLISH)))
+            if (name.endsWith('.' + ext.toLowerCase(Locale.ENGLISH)))
                 return true;
         }
         return false;
diff --git a/src/org/openstreetmap/josm/tools/WikiReader.java b/src/org/openstreetmap/josm/tools/WikiReader.java
index 6094c40..3e6527a 100644
--- a/src/org/openstreetmap/josm/tools/WikiReader.java
+++ b/src/org/openstreetmap/josm/tools/WikiReader.java
@@ -105,7 +105,7 @@ public class WikiReader {
         }
     }
 
-    private String readNormal(BufferedReader in, boolean html) throws IOException {
+    private static String readNormal(BufferedReader in, boolean html) throws IOException {
         StringBuilder b = new StringBuilder();
         for (String line = in.readLine(); line != null; line = in.readLine()) {
             if (!line.contains("[[TranslatedPages]]")) {
@@ -119,10 +119,10 @@ public class WikiReader {
         boolean inside = false;
         boolean transl = false;
         boolean skip = false;
-        String b = "";
-        String full = "";
+        StringBuilder b = new StringBuilder();
+        StringBuilder full = new StringBuilder();
         for (String line = in.readLine(); line != null; line = in.readLine()) {
-            full += line;
+            full.append(line);
             if (line.contains("<div id=\"searchable\">")) {
                 inside = true;
             } else if (line.contains("<div class=\"wiki-toc trac-nav\"")) {
@@ -141,11 +141,13 @@ public class WikiReader {
             if (inside && !transl && !skip) {
                 // add a border="0" attribute to images, otherwise the internal help browser
                 // will render a thick  border around images inside an <a> element
-                b += line.replaceAll("<img ", "<img border=\"0\" ")
+                // remove width information to avoid distorded images (fix #11262)
+                b.append(line.replaceAll("<img ", "<img border=\"0\" ")
+                         .replaceAll("width=\"(\\d+)\"", "")
                          .replaceAll("<span class=\"icon\">.</span>", "")
-                         .replaceAll("href=\"/", "href=\"" + baseurl + "/")
-                         .replaceAll(" />", ">")
-                         + "\n";
+                         .replaceAll("href=\"/", "href=\"" + baseurl + '/')
+                         .replaceAll(" />", ">"))
+                         .append('\n');
             } else if (transl && line.contains("</div>")) {
                 transl = false;
             }
@@ -156,7 +158,7 @@ public class WikiReader {
         if (b.indexOf("      Describe ") >= 0
         || b.indexOf(" does not exist. You can create it here.</p>") >= 0)
             return "";
-        if (b.isEmpty())
+        if (b.length() == 0)
             b = full;
         return "<html><base href=\""+url.toExternalForm() +"\"> " + b + "</html>";
     }
diff --git a/src/org/openstreetmap/josm/tools/WindowGeometry.java b/src/org/openstreetmap/josm/tools/WindowGeometry.java
index bd95778..f18c5ba 100644
--- a/src/org/openstreetmap/josm/tools/WindowGeometry.java
+++ b/src/org/openstreetmap/josm/tools/WindowGeometry.java
@@ -357,7 +357,7 @@ public class WindowGeometry {
      * @see <a href="https://josm.openstreetmap.de/ticket/9699">JOSM-9699</a>
      * @see <a href="https://bugs.launchpad.net/ubuntu/+source/openjdk-7/+bug/1171563">Ubuntu-1171563</a>
      * @see <a href="http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1669">IcedTea-1669</a>
-     * @see <a href="https://bugs.openjdk.java.net/browse/JI-9010334">JI-9010334</a>
+     * @see <a href="https://bugs.openjdk.java.net/browse/JDK-8034224">JDK-8034224</a>
      */
     protected static boolean isBugInMaximumWindowBounds(Rectangle maxbounds) {
         return maxbounds.width <= 0 || maxbounds.height <= 0;
@@ -473,6 +473,6 @@ public class WindowGeometry {
 
     @Override
     public String toString() {
-        return "WindowGeometry{topLeft="+topLeft+",extent="+extent+"}";
+        return "WindowGeometry{topLeft="+topLeft+",extent="+extent+'}';
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/XmlObjectParser.java b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
index d35c77c..ec03482 100644
--- a/src/org/openstreetmap/josm/tools/XmlObjectParser.java
+++ b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
@@ -48,7 +48,7 @@ public class XmlObjectParser implements Iterable<Object> {
 
         private final String namespace;
 
-        public AddNamespaceFilter(String namespace) {
+        AddNamespaceFilter(String namespace) {
             this.namespace = namespace;
         }
 
@@ -59,9 +59,7 @@ public class XmlObjectParser implements Iterable<Object> {
             } else {
                 super.startElement(uri, localName, qName, atts);
             }
-
         }
-
     }
 
     private class Parser extends DefaultHandler {
@@ -134,7 +132,7 @@ public class XmlObjectParser implements Iterable<Object> {
             CheckParameterUtil.ensureParameterNotNull(entry, "entry");
             if ("class".equals(fieldName) || "default".equals(fieldName) || "throw".equals(fieldName) ||
                     "new".equals(fieldName) || "null".equals(fieldName)) {
-                fieldName += "_";
+                fieldName += '_';
             }
             try {
                 Object c = current.peek();
@@ -189,7 +187,7 @@ public class XmlObjectParser implements Iterable<Object> {
         private final Map<String, Field> fields = new HashMap<>();
         private final Map<String, Method> methods = new HashMap<>();
 
-        public Entry(Class<?> klass, boolean onStart, boolean both) {
+        Entry(Class<?> klass, boolean onStart, boolean both) {
             this.klass = klass;
             this.onStart = onStart;
             this.both = both;
@@ -233,7 +231,7 @@ public class XmlObjectParser implements Iterable<Object> {
      * The queue of already parsed items from the parsing thread.
      */
     private List<Object> queue = new LinkedList<>();
-    private Iterator<Object> queueIterator = null;
+    private Iterator<Object> queueIterator;
 
     /**
      * Constructs a new {@code XmlObjectParser}.
diff --git a/src/org/openstreetmap/josm/tools/XmlParsingException.java b/src/org/openstreetmap/josm/tools/XmlParsingException.java
index 8a33e64..032f987 100644
--- a/src/org/openstreetmap/josm/tools/XmlParsingException.java
+++ b/src/org/openstreetmap/josm/tools/XmlParsingException.java
@@ -60,7 +60,7 @@ public class XmlParsingException extends SAXException {
         if (msg == null) {
             msg = getClass().getName();
         }
-        return msg + " " + tr("(at line {0}, column {1})", lineNumber, columnNumber);
+        return msg + ' ' + tr("(at line {0}, column {1})", lineNumber, columnNumber);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/date/FallbackDateParser.java b/src/org/openstreetmap/josm/tools/date/FallbackDateParser.java
index afc50f0..55cf131 100644
--- a/src/org/openstreetmap/josm/tools/date/FallbackDateParser.java
+++ b/src/org/openstreetmap/josm/tools/date/FallbackDateParser.java
@@ -41,7 +41,7 @@ class FallbackDateParser {
     /**
      * Creates a new instance.
      */
-    public FallbackDateParser() {
+    FallbackDateParser() {
         // Build a list of candidate date parsers.
         dateParsers = new ArrayList<>(formats.length);
         for (String format : formats) {
diff --git a/src/org/openstreetmap/josm/tools/date/PrimaryDateParser.java b/src/org/openstreetmap/josm/tools/date/PrimaryDateParser.java
index 1a005bc..7ea7e6f 100644
--- a/src/org/openstreetmap/josm/tools/date/PrimaryDateParser.java
+++ b/src/org/openstreetmap/josm/tools/date/PrimaryDateParser.java
@@ -39,7 +39,7 @@ public class PrimaryDateParser {
         calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
     }
 
-    private boolean isDateInShortStandardFormat(String date) {
+    private static boolean isDateInShortStandardFormat(String date) {
         char[] dateChars;
         // We can only parse the date if it is in a very specific format.
         // eg. 2007-09-23T08:25:43Z
@@ -106,7 +106,7 @@ public class PrimaryDateParser {
         return true;
     }
 
-    private boolean isDateInLongStandardFormat(String date) {
+    private static boolean isDateInLongStandardFormat(String date) {
         char[] dateChars;
         // We can only parse the date if it is in a very specific format.
         // eg. 2007-09-23T08:25:43.000Z
diff --git a/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java b/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
index 091c5e4..423216a 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/SearchExpressionCondition.java
@@ -25,6 +25,6 @@ public class SearchExpressionCondition implements TemplateEntry {
 
     @Override
     public String toString() {
-        return condition.toString() + " '" + text + "'";
+        return condition.toString() + " '" + text + '\'';
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java b/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
index eada0b3..de6a25a 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/TemplateParser.java
@@ -1,7 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools.template_engine;
 
-
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -14,13 +13,19 @@ import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.Token;
 import org.openstreetmap.josm.tools.template_engine.Tokenizer.TokenType;
 
-
+/**
+ * Template parser.
+ */
 public class TemplateParser {
     private final Tokenizer tokenizer;
 
     private static final Collection<TokenType> EXPRESSION_END_TOKENS = Arrays.asList(TokenType.EOF);
     private static final Collection<TokenType> CONDITION_WITH_APOSTROPHES_END_TOKENS = Arrays.asList(TokenType.APOSTROPHE);
 
+    /**
+     * Constructs a new {@code TemplateParser}.
+     * @param template template to parse
+     */
     public TemplateParser(String template) {
         this.tokenizer = new Tokenizer(template);
     }
@@ -33,6 +38,11 @@ public class TemplateParser {
             return token;
     }
 
+    /**
+     * Parse the template.
+     * @return the resulting template entry
+     * @throws ParseError if the template cannot be parsed
+     */
     public TemplateEntry parse() throws ParseError {
         return parseExpression(EXPRESSION_END_TOKENS);
     }
@@ -89,8 +99,8 @@ public class TemplateParser {
             } else {
                 try {
                     result.getEntries().add(new SearchExpressionCondition(
-                            SearchCompiler.compile(searchExpression.getText(), false, false), condition));
-                } catch (org.openstreetmap.josm.actions.search.SearchCompiler.ParseError e) {
+                            SearchCompiler.compile(searchExpression.getText()), condition));
+                } catch (SearchCompiler.ParseError e) {
                     throw new ParseError(searchExpression.getPosition(), e);
                 }
             }
@@ -118,9 +128,9 @@ public class TemplateParser {
             throw new ParseError(tr("Expected search expression"));
         else {
             try {
-                Match match = SearchCompiler.compile(searchExpression.getText(), false, false);
+                Match match = SearchCompiler.compile(searchExpression.getText());
                 result = new ContextSwitchTemplate(match, template, searchExpression.getPosition());
-            } catch (org.openstreetmap.josm.actions.search.SearchCompiler.ParseError e) {
+            } catch (SearchCompiler.ParseError e) {
                 throw new ParseError(searchExpression.getPosition(), e);
             }
         }
@@ -128,5 +138,4 @@ public class TemplateParser {
         check(TokenType.END);
         return result;
     }
-
 }
diff --git a/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java b/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java
index e8bcca2..cd38c62 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/Tokenizer.java
@@ -2,7 +2,8 @@
 package org.openstreetmap.josm.tools.template_engine;
 
 import java.util.Arrays;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 public class Tokenizer {
 
@@ -35,13 +36,13 @@ public class Tokenizer {
 
         @Override
         public String toString() {
-            return type + (text != null ? " " + text : "");
+            return type + (text != null ? ' ' + text : "");
         }
     }
 
     public enum TokenType { CONDITION_START, VARIABLE_START, CONTEXT_SWITCH_START, END, PIPE, APOSTROPHE, TEXT, EOF }
 
-    private final List<Character> specialCharaters = Arrays.asList(new Character[] {'$', '?', '{', '}', '|', '\'', '!'});
+    private final Set<Character> specialCharaters = new HashSet<>(Arrays.asList(new Character[] {'$', '?', '{', '}', '|', '\'', '!'}));
 
     private final String template;
 
diff --git a/src/org/openstreetmap/josm/tools/template_engine/Variable.java b/src/org/openstreetmap/josm/tools/template_engine/Variable.java
index 9dbf61b..68c2d54 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/Variable.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/Variable.java
@@ -55,7 +55,7 @@ public class Variable implements TemplateEntry {
 
     @Override
     public String toString() {
-        return "{" + variableName + "}";
+        return '{' + variableName + '}';
     }
 
     public boolean isSpecial() {
diff --git a/styles/standard/elemstyles.mapcss b/styles/standard/elemstyles.mapcss
index 90af371..45439df 100644
--- a/styles/standard/elemstyles.mapcss
+++ b/styles/standard/elemstyles.mapcss
@@ -1738,6 +1738,7 @@ area[shop=bookmaker],
 area[shop=lottery],
 area[shop=shopping_centre],
 area[shop=pet],
+area[shop=photo],
 area[shop=ticket],
 area[shop=interior_decoration],
 area[shop=car_parts],
@@ -2075,6 +2076,11 @@ node[shop=pet] {
     set icon_z17;
     text: auto;
 }
+node[shop=photo] {
+    icon-image: "shop/photo.svg";
+    set icon_z17;
+    text: auto;
+}
 node[shop=ticket] {
     icon-image: "shop/ticket.svg";
     set icon_z17;
@@ -2741,6 +2747,11 @@ node[emergency=fire_hydrant] {
     set icon_z17;
     text: auto;
 }
+node[amenity=compressed_air] {
+    icon-image: "vehicle/compressed_air.svg";
+    set icon_z17;
+    text: auto;
+}
 area[amenity=shelter],
 area[amenity=marketplace],
 area[amenity=wlan] {
diff --git a/test/data/planet-notes-extract.osn b/test/data/planet-notes-extract.osn
new file mode 100644
index 0000000..10cfcbf
--- /dev/null
+++ b/test/data/planet-notes-extract.osn
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<osm-notes>
+<note id="4" lat="36.7232991" lon="68.8641500" created_at="2013-04-24T08:07:02Z" closed_at="2013-04-24T08:08:51Z">
+  <comment action="opened" timestamp="2013-04-24T08:07:02Z" uid="1626" user="FredB">test</comment>
+  <comment action="closed" timestamp="2013-04-24T08:08:51Z" uid="1626" user="FredB"></comment>
+</note>
+<note id="5" lat="51.7609210" lon="-0.0112063" created_at="2013-04-24T08:10:38Z" closed_at="2013-04-24T21:31:47Z">
+  <comment action="opened" timestamp="2013-04-24T08:10:38Z" uid="3980" user="TomH">This building has been demolished and is currently a construction site.</comment>
+  <comment action="closed" timestamp="2013-04-24T21:31:47Z" uid="3980" user="TomH"></comment>
+</note>
+<note id="6" lat="35.5170066" lon="139.6322554" created_at="2013-04-24T08:12:38Z" closed_at="2013-05-10T12:28:11Z">
+  <comment action="opened" timestamp="2013-04-24T08:12:38Z" uid="378532" user="nyampire">Ministopは閉店済み</comment>
+  <comment action="closed" timestamp="2013-05-10T12:28:11Z" uid="10353" user="gorn">name corrected</comment>
+</note>
+<note id="7" lat="50.9381992" lon="1.8605947" created_at="2013-04-24T08:14:28Z" closed_at="2013-04-24T08:14:50Z">
+  <comment action="opened" timestamp="2013-04-24T08:14:28Z">Adresse complète :
+B&B CALAIS Centre St Pierre 	 
+ZAC Curie
+Rue de Lille
+62100 CALAIS
+Tel. 08 92 70 75 18 (0.34€ TTC/mn depuis un poste fixe)
+Fax. 03 21 00 92 71
+Parking, accès handicapé, wifi, ascenseur, caméra</comment>
+  <comment action="closed" timestamp="2013-04-24T08:14:50Z" uid="37548" user="Marcussacapuces91"></comment>
+</note>
+<note id="289379" lat="50.3699789" lon="8.6278027" created_at="2014-12-21T01:30:26Z">
+  <comment action="opened" timestamp="2014-12-21T01:30:26Z">Freizeitheim Uhu</comment>
+</note>
+<note id="289380" lat="48.5979475" lon="-2.1622145" created_at="2014-12-21T01:51:36Z">
+  <comment action="opened" timestamp="2014-12-21T01:51:36Z">parking</comment>
+</note>
+<note id="289381" lat="49.8535075" lon="20.9857535" created_at="2014-12-21T02:14:51Z" closed_at="2014-12-21T02:16:33Z">
+  <comment action="opened" timestamp="2014-12-21T02:14:51Z">to nie ścieżka</comment>
+  <comment action="closed" timestamp="2014-12-21T02:16:33Z" uid="163896" user="Zbigniew_Czernik">zgadza się</comment>
+</note>
+<note id="289382" lat="49.8537980" lon="20.9873736" created_at="2014-12-21T02:15:04Z">
+  <comment action="opened" timestamp="2014-12-21T02:15:04Z">to nie ścieżka</comment>
+</note>
+<note id="289383" lat="49.8525390" lon="20.9827387" created_at="2014-12-21T02:15:23Z" closed_at="2014-12-21T02:18:01Z">
+  <comment action="opened" timestamp="2014-12-21T02:15:23Z">o to za droga i dlaczego brak jej oznaczenia w legendzie?</comment>
+  <comment action="closed" timestamp="2014-12-21T02:18:01Z" uid="163896" user="Zbigniew_Czernik">bo legenda jest stara i nieaktualna. To jest droga lokalna.</comment>
+</note>
+</osm-notes>
diff --git a/test/data/regress/11957/data.osm b/test/data/regress/11957/data.osm
new file mode 100644
index 0000000..0182601
--- /dev/null
+++ b/test/data/regress/11957/data.osm
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='30203000' timestamp='2012-06-04T07:43:48Z' uid='207581' user='Hjart' visible='true' version='4' changeset='11793732' lat='55.510607' lon='8.4295289' />
+  <node id='30203008' timestamp='2010-12-04T12:37:53Z' uid='207581' user='Hjart' visible='true' version='4' changeset='6537026' lat='55.5078651' lon='8.4287936' />
+  <node id='35213705' timestamp='2010-12-04T10:40:06Z' uid='80543' user='findvej' visible='true' version='2' changeset='6535476' lat='55.507892' lon='8.4307184' />
+  <node id='1618968998' timestamp='2012-06-04T07:43:44Z' uid='207581' user='Hjart' visible='true' version='2' changeset='11793732' lat='55.5090061' lon='8.4285087' />
+  <node id='1618968999' timestamp='2012-02-05T14:55:52Z' uid='599792' user='jorgenj' visible='true' version='1' changeset='10594291' lat='55.5097831' lon='8.4284817' />
+  <node id='1618969016' timestamp='2012-02-05T14:55:52Z' uid='599792' user='jorgenj' visible='true' version='1' changeset='10594291' lat='55.5107187' lon='8.4297369' />
+  <node id='1618969019' timestamp='2012-02-05T14:55:52Z' uid='599792' user='jorgenj' visible='true' version='1' changeset='10594291' lat='55.5099168' lon='8.4285353' />
+  <node id='1618969020' timestamp='2012-02-05T14:55:52Z' uid='599792' user='jorgenj' visible='true' version='1' changeset='10594291' lat='55.5100444' lon='8.4286211' />
+  <node id='1618969035' timestamp='2012-06-04T07:43:44Z' uid='207581' user='Hjart' visible='true' version='2' changeset='11793732' lat='55.5078814' lon='8.428584' />
+  <node id='1618969038' timestamp='2012-02-05T14:55:53Z' uid='599792' user='jorgenj' visible='true' version='1' changeset='10594291' lat='55.5079483' lon='8.4284817' />
+  <way id='5116361' timestamp='2012-06-04T07:43:34Z' uid='207581' user='Hjart' visible='true' version='3' changeset='11793732'>
+    <nd ref='35213705' />
+    <nd ref='30203008' />
+    <tag k='highway' v='unclassified' />
+  </way>
+  <way id='148830403' timestamp='2012-06-04T07:43:39Z' uid='207581' user='Hjart' visible='true' version='2' changeset='11793732'>
+    <nd ref='1618969016' />
+    <nd ref='30203000' />
+    <nd ref='1618969020' />
+    <nd ref='1618969019' />
+    <nd ref='1618968999' />
+    <nd ref='1618968998' />
+    <nd ref='1618969038' />
+    <nd ref='1618969035' />
+    <nd ref='30203008' />
+    <tag k='highway' v='unclassified' />
+  </way>
+</osm>
diff --git a/test/data/regress/11992/shapes.osm b/test/data/regress/11992/shapes.osm
new file mode 100644
index 0000000..2390548
--- /dev/null
+++ b/test/data/regress/11992/shapes.osm
@@ -0,0 +1,173 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='true' generator='JOSM'>
+  <node id='-1233' action='modify' visible='true' lat='32.74435355378' lon='-98.11030215517' />
+  <node id='-1231' action='modify' visible='true' lat='32.74435355378' lon='-98.11179283942' />
+  <node id='-1229' action='modify' visible='true' lat='32.74989438578' lon='-98.10903651443' />
+  <node id='-1227' action='modify' visible='true' lat='32.74927333813' lon='-98.10578108968' />
+  <node id='-1225' action='modify' visible='true' lat='32.74603447107' lon='-98.10695621862' />
+  <node id='-1223' action='modify' visible='true' lat='32.74713636689' lon='-98.11172025483' />
+  <node id='-1221' action='modify' visible='true' lat='32.74831838544' lon='-98.10846483008' />
+  <node id='-1219' action='modify' visible='true' lat='32.75064230838' lon='-98.10803606682' />
+  <node id='-1217' action='modify' visible='true' lat='32.75035516027' lon='-98.10604311167' />
+  <node id='-1215' action='modify' visible='true' lat='32.74853208204' lon='-98.10674977705' />
+  <node id='-1213' action='modify' visible='true' lat='32.74973544724' lon='-98.10820338383' />
+  <node id='-1211' action='modify' visible='true' lat='32.74939437371' lon='-98.10641553556' />
+  <node id='-1209' action='modify' visible='true' lat='32.74531422549' lon='-98.11185517227' />
+  <node id='-1207' action='modify' visible='true' lat='32.74524811415' lon='-98.10914899747' />
+  <node id='-1205' action='modify' visible='true' lat='32.74398254467' lon='-98.10911531065' />
+  <node id='-1203' action='modify' visible='true' lat='32.74395421082' lon='-98.11266365602' />
+  <node id='-1201' action='modify' visible='true' lat='32.74541811465' lon='-98.11261874026' />
+  <node id='-1199' action='modify' visible='true' lat='32.74302863341' lon='-98.11267488496' />
+  <node id='-1197' action='modify' visible='true' lat='32.74307585698' lon='-98.10933988947' />
+  <node id='-1195' action='modify' visible='true' lat='32.74196137404' lon='-98.1104964704' />
+  <node id='-1193' action='modify' visible='true' lat='32.74184803602' lon='-98.1128208612' />
+  <node id='-1191' action='modify' visible='true' lat='32.74228249767' lon='-98.11318018731' />
+  <node id='-1189' action='modify' visible='true' lat='32.7439591058' lon='-98.11205064051' />
+  <node id='-1187' action='modify' visible='true' lat='32.74397490534' lon='-98.11007200985' />
+  <node id='-1185' action='modify' visible='true' lat='32.74493644572' lon='-98.10580277304' />
+  <node id='-1183' action='modify' visible='true' lat='32.74502144631' lon='-98.10768923514' />
+  <node id='-1181' action='modify' visible='true' lat='32.74352920198' lon='-98.1077902956' />
+  <node id='-1179' action='modify' visible='true' lat='32.74315141464' lon='-98.10383770835' />
+  <node id='-1177' action='modify' visible='true' lat='32.74496477926' lon='-98.10374787683' />
+  <node id='-1175' action='modify' visible='true' lat='32.74152691082' lon='-98.10881212924' />
+  <node id='-1173' action='modify' visible='true' lat='32.74151746594' lon='-98.10391631094' />
+  <node id='-1171' action='modify' visible='true' lat='32.74414310299' lon='-98.10536484434' />
+  <node id='-1169' action='modify' visible='true' lat='32.74421865974' lon='-98.10703795655' />
+  <node id='-1167' action='modify' visible='true' lat='32.74202748783' lon='-98.10725130643' />
+  <node id='-1165' action='modify' visible='true' lat='32.7432502999' lon='-98.10487229048' />
+  <node id='-1163' action='modify' visible='true' lat='32.74346431401' lon='-98.10711140623' />
+  <node id='-1161' action='modify' visible='true' lat='32.74884638884' lon='-98.11700925621' />
+  <node id='-1159' action='modify' visible='true' lat='32.74929026043' lon='-98.11430308141' />
+  <node id='-1157' action='modify' visible='true' lat='32.74674032969' lon='-98.11334862143' />
+  <node id='-1155' action='modify' visible='true' lat='32.7461075578' lon='-98.11641412233' />
+  <node id='-1153' action='modify' visible='true' lat='32.74741087411' lon='-98.11787388467' />
+  <node id='-1151' action='modify' visible='true' lat='32.74743920686' lon='-98.11553826493' />
+  <node id='-1149' action='modify' visible='true' lat='32.74478533336' lon='-98.11684082209' />
+  <node id='-1147' action='modify' visible='true' lat='32.7447664443' lon='-98.11442659977' />
+  <node id='-1145' action='modify' visible='true' lat='32.74598478064' lon='-98.11392129742' />
+  <node id='-1143' action='modify' visible='true' lat='32.74615860853' lon='-98.11616680483' />
+  <node id='-1141' action='modify' visible='true' lat='32.74650316011' lon='-98.11449760604' />
+  <node id='-1139' action='modify' visible='true' lat='32.74378635535' lon='-98.11709305007' />
+  <node id='-1137' action='modify' visible='true' lat='32.7419255211' lon='-98.11710488089' />
+  <node id='-1135' action='modify' visible='true' lat='32.7419255211' lon='-98.1159809523' />
+  <node id='-1133' action='modify' visible='true' lat='32.74377640447' lon='-98.11599278312' />
+  <node id='-1131' action='modify' visible='true' lat='32.74326890802' lon='-98.11648967787' />
+  <node id='-1129' action='modify' visible='true' lat='32.74236336795' lon='-98.11647784704' />
+  <node id='-1127' action='modify' visible='true' lat='32.74236336795' lon='-98.11492800866' />
+  <node id='-1125' action='modify' visible='true' lat='32.74327885896' lon='-98.11493983949' />
+  <way id='-1253' action='modify' visible='true'>
+    <nd ref='-1189' />
+    <nd ref='-1203' />
+    <nd ref='-1201' />
+    <nd ref='-1209' />
+    <nd ref='-1207' />
+    <nd ref='-1205' />
+    <nd ref='-1187' />
+    <nd ref='-1189' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='C' />
+  </way>
+  <way id='-1251' action='modify' visible='true'>
+    <nd ref='-1187' />
+    <nd ref='-1197' />
+    <nd ref='-1195' />
+    <nd ref='-1193' />
+    <nd ref='-1191' />
+    <nd ref='-1199' />
+    <nd ref='-1189' />
+    <nd ref='-1231' />
+    <nd ref='-1233' />
+    <nd ref='-1187' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='C' />
+  </way>
+  <way id='-1249' action='modify' visible='true'>
+    <nd ref='-1229' />
+    <nd ref='-1213' />
+    <nd ref='-1211' />
+    <nd ref='-1227' />
+    <nd ref='-1225' />
+    <nd ref='-1223' />
+    <nd ref='-1229' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='B' />
+  </way>
+  <way id='-1247' action='modify' visible='true'>
+    <nd ref='-1213' />
+    <nd ref='-1219' />
+    <nd ref='-1217' />
+    <nd ref='-1211' />
+    <nd ref='-1215' />
+    <nd ref='-1221' />
+    <nd ref='-1213' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='B' />
+  </way>
+  <way id='-1245' action='modify' visible='true'>
+    <nd ref='-1185' />
+    <nd ref='-1183' />
+    <nd ref='-1181' />
+    <nd ref='-1163' />
+    <nd ref='-1165' />
+    <nd ref='-1179' />
+    <nd ref='-1177' />
+    <nd ref='-1185' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='D' />
+  </way>
+  <way id='-1243' action='modify' visible='true'>
+    <nd ref='-1165' />
+    <nd ref='-1171' />
+    <nd ref='-1169' />
+    <nd ref='-1163' />
+    <nd ref='-1167' />
+    <nd ref='-1175' />
+    <nd ref='-1173' />
+    <nd ref='-1165' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='D' />
+  </way>
+  <way id='-1241' action='modify' visible='true'>
+    <nd ref='-1161' />
+    <nd ref='-1159' />
+    <nd ref='-1157' />
+    <nd ref='-1141' />
+    <nd ref='-1143' />
+    <nd ref='-1155' />
+    <nd ref='-1153' />
+    <nd ref='-1161' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='A' />
+  </way>
+  <way id='-1239' action='modify' visible='true'>
+    <nd ref='-1141' />
+    <nd ref='-1151' />
+    <nd ref='-1143' />
+    <nd ref='-1149' />
+    <nd ref='-1147' />
+    <nd ref='-1145' />
+    <nd ref='-1141' />
+    <tag k='amenity' v='parking' />
+    <tag k='ref' v='A' />
+  </way>
+  <way id='-1237' action='modify' visible='true'>
+    <nd ref='-1139' />
+    <nd ref='-1137' />
+    <nd ref='-1135' />
+    <nd ref='-1133' />
+    <nd ref='-1139' />
+    <tag k='landuse' v='grass' />
+    <tag k='name' v='BUG' />
+    <tag k='ref' v='E' />
+  </way>
+  <way id='-1235' action='modify' visible='true'>
+    <nd ref='-1131' />
+    <nd ref='-1129' />
+    <nd ref='-1127' />
+    <nd ref='-1125' />
+    <nd ref='-1131' />
+    <tag k='landuse' v='grass' />
+    <tag k='name' v='BUG' />
+    <tag k='ref' v='E' />
+  </way>
+</osm>
diff --git a/test/data/sessions/bing.jos b/test/data/sessions/bing.jos
new file mode 100644
index 0000000..16c9bd4
--- /dev/null
+++ b/test/data/sessions/bing.jos
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<josm-session version="0.1">
+    <viewport>
+        <center lat="1" lon="1"/>
+        <scale meter-per-pixel="9"/>
+    </viewport>
+    <layers active="1">
+        <layer index="1" name="Bing aerial imagery" type="imagery" version="0.1" visible="true">
+            <name>Bing aerial imagery</name>
+            <id>Bing</id>
+            <type>bing</type>
+            <url>http://www.bing.com/maps/</url>
+            <max-zoom>22</max-zoom>
+            <automatic-downloading>true</automatic-downloading>
+            <automatically-change-resolution>true</automatically-change-resolution>
+            <show-errors>true</show-errors>
+            <dx>12.34</dx>
+            <dy>-56.78</dy>
+        </layer>
+    </layers>
+</josm-session>
diff --git a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
index c7e5182..056bfbe 100644
--- a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
@@ -9,6 +9,7 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
@@ -173,9 +174,12 @@ public class MultiFetchServerObjectReaderTest {
 
     /**
      * Setup test.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if an error was found while parsing the OSM data
+     * @throws FileNotFoundException if the dataset file cannot be found
      */
     @Before
-    public void setUp() throws IOException, IllegalDataException {
+    public void setUp() throws IOException, IllegalDataException, FileNotFoundException {
         File f = new File(System.getProperty("java.io.tmpdir"), MultiFetchServerObjectReaderTest.class.getName() + ".dataset");
         logger.info(MessageFormat.format("reading cached dataset ''{0}''", f.toString()));
         ds = new DataSet();
diff --git a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
index bf30164..6c32d8a 100644
--- a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
@@ -9,6 +9,7 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
@@ -129,6 +130,7 @@ public class OsmServerBackreferenceReaderTest {
      *
      * @param ds the data set
      * @throws OsmTransferException if something goes wrong
+     * @throws CyclicUploadDependencyException if a cyclic dependency is detected
      */
     public static void createDataSetOnServer(APIDataSet ds) throws OsmTransferException, CyclicUploadDependencyException {
         logger.info("creating data set on the server ...");
@@ -143,8 +145,13 @@ public class OsmServerBackreferenceReaderTest {
 
     static DataSet testDataSet;
 
+    /**
+     * Setup test.
+     * @throws OsmTransferException if something goes wrong
+     * @throws CyclicUploadDependencyException if a cyclic dependency is detected
+     */
     @BeforeClass
-    public static void init() throws OsmTransferException, CyclicUploadDependencyException {
+    public static void setUpBeforeClass() throws OsmTransferException, CyclicUploadDependencyException {
         logger.info("initializing ...");
 
         JOSMFixture.createFunctionalTestFixture().init();
@@ -194,9 +201,12 @@ public class OsmServerBackreferenceReaderTest {
 
     /**
      * Setup test.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if an error was found while parsing the OSM data
+     * @throws FileNotFoundException if the dataset file cannot be found
      */
     @Before
-    public void setUp() throws IOException, IllegalDataException {
+    public void setUp() throws IOException, IllegalDataException, FileNotFoundException {
         File f = new File(System.getProperty("java.io.tmpdir"), MultiFetchServerObjectReaderTest.class.getName() + ".dataset");
         logger.info(MessageFormat.format("reading cached dataset ''{0}''", f.toString()));
         ds = new DataSet();
diff --git a/test/performance/org/openstreetmap/josm/data/osm/OsmDataGenerator.java b/test/performance/org/openstreetmap/josm/data/osm/OsmDataGenerator.java
index ec13b7f..5ce5f05 100644
--- a/test/performance/org/openstreetmap/josm/data/osm/OsmDataGenerator.java
+++ b/test/performance/org/openstreetmap/josm/data/osm/OsmDataGenerator.java
@@ -110,6 +110,7 @@ public final class OsmDataGenerator {
 
         /**
          * Create a random node and add it to the dataset.
+         * @param ds the data set
          * @return a random node
          */
         protected Node createRandomNode(DataSet ds) {
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java
index e828005..744f1b6 100644
--- a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java
@@ -26,7 +26,7 @@ public class MapCSSStyleSourceFilterTest {
          * Create a new CSS generator.
          * @param generator A generator to get the keys from.
          */
-        public CssGenerator(KeyValueDataGenerator generator) {
+        CssGenerator(KeyValueDataGenerator generator) {
             this.generator = generator;
         }
 
diff --git a/test/unit/org/CustomMatchers.java b/test/unit/org/CustomMatchers.java
index 2f87384..2cc656c 100644
--- a/test/unit/org/CustomMatchers.java
+++ b/test/unit/org/CustomMatchers.java
@@ -13,6 +13,9 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.Predicate;
 
+/**
+ * Custom matchers for unit tests.
+ */
 @Ignore("no test")
 public final class CustomMatchers {
 
@@ -20,6 +23,11 @@ public final class CustomMatchers {
         // Hide constructor for utility classes
     }
 
+    /**
+     * Matcher for a predicate.
+     * @param predicate the predicate
+     * @return matcher for a predicate
+     */
     public static <T> Matcher<? extends T> forPredicate(final Predicate<T> predicate) {
         return new TypeSafeMatcher<T>() {
 
@@ -35,6 +43,11 @@ public final class CustomMatchers {
         };
     }
 
+    /**
+     * Matcher for a collection of a given size.
+     * @param size of collection
+     * @return matcher for a collection of a given size
+     */
     public static Matcher<Collection<?>> hasSize(final int size) {
         return new TypeSafeMatcher<Collection<?>>() {
             @Override
@@ -49,6 +62,10 @@ public final class CustomMatchers {
         };
     }
 
+    /**
+     * Matcher for an empty collection.
+     * @return matcher for an empty collection
+     */
     public static Matcher<Collection<?>> isEmpty() {
         return new TypeSafeMatcher<Collection<?>>() {
             @Override
@@ -63,6 +80,11 @@ public final class CustomMatchers {
         };
     }
 
+    /**
+     * Matcher for a point at a given location.
+     * @param expected expected location
+     * @return matcher for a point at a given location
+     */
     public static Matcher<? super Point2D> is(final Point2D expected) {
         return new CustomTypeSafeMatcher<Point2D>("the same Point2D") {
             @Override
@@ -72,6 +94,11 @@ public final class CustomMatchers {
         };
     }
 
+    /**
+     * Matcher for a point at a given location.
+     * @param expected expected location
+     * @return matcher for a point at a given location
+     */
     public static Matcher<? super LatLon> is(final LatLon expected) {
         return new CustomTypeSafeMatcher<LatLon>("the same LatLon") {
             @Override
@@ -82,6 +109,11 @@ public final class CustomMatchers {
         };
     }
 
+    /**
+     * Matcher for a point at a given location.
+     * @param expected expected location
+     * @return matcher for a point at a given location
+     */
     public static Matcher<? super EastNorth> is(final EastNorth expected) {
         return new CustomTypeSafeMatcher<EastNorth>("the same EastNorth") {
             @Override
@@ -91,5 +123,4 @@ public final class CustomMatchers {
             }
         };
     }
-
 }
diff --git a/test/unit/org/openstreetmap/josm/MainTest.java b/test/unit/org/openstreetmap/josm/MainTest.java
index 6100e9e..52c42c7 100644
--- a/test/unit/org/openstreetmap/josm/MainTest.java
+++ b/test/unit/org/openstreetmap/josm/MainTest.java
@@ -1,15 +1,75 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
 
 import org.junit.Test;
+import org.openstreetmap.josm.Main.DownloadParamType;
 
+/**
+ * Unit tests of {@link Main} class.
+ */
 public class MainTest {
+
+    /**
+     * Unit test of {@link DownloadParamType#paramType} method.
+     */
+    @Test
+    public void testParamType() {
+        assertEquals(DownloadParamType.bounds, DownloadParamType.paramType("48.000,16.000,48.001,16.001"));
+        assertEquals(DownloadParamType.fileName, DownloadParamType.paramType("data.osm"));
+        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file:///home/foo/data.osm"));
+        assertEquals(DownloadParamType.fileUrl, DownloadParamType.paramType("file://C:\\Users\\foo\\data.osm"));
+        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("http://somewhere.com/data.osm"));
+        assertEquals(DownloadParamType.httpUrl, DownloadParamType.paramType("https://somewhere.com/data.osm"));
+    }
+
+    /**
+     * Unit tests on log messages.
+     */
     @Test
-    public void testParamType() throws Exception {
-        assertThat(Main.paramType("48.000,16.000,48.001,16.001"), is(Main.DownloadParamType.bounds));
+    public void testLogs() {
+
+        assertNull(Main.getErrorMessage(null));
+
+        // Correct behaviour with errors
+        Main.error(new Exception("exception_error"));
+        Main.error("Error message on one line");
+        Main.error("First line of error message on several lines\nline2\nline3\nline4");
+        Collection<String> errors = Main.getLastErrorAndWarnings();
+        assertTrue(errors.contains("E: java.lang.Exception: exception_error"));
+        assertTrue(errors.contains("E: Error message on one line"));
+        assertTrue(errors.contains("E: First line of error message on several lines"));
+
+        // Correct behaviour with warnings
+        Main.warn(new Exception("exception_warn", new Exception("root_cause")));
+        Main.warn("Warning message on one line");
+        Main.warn("First line of warning message on several lines\nline2\nline3\nline4");
+        Collection<String> warnings = Main.getLastErrorAndWarnings();
+        assertTrue(warnings.contains("W: java.lang.Exception: exception_warn. Cause: java.lang.Exception: root_cause"));
+        assertTrue(warnings.contains("W: Warning message on one line"));
+        assertTrue(warnings.contains("W: First line of warning message on several lines"));
+
+        int defaultLevel = Main.logLevel;
+
+        // Check levels
+        Main.logLevel = 5;
+        assertTrue(Main.isTraceEnabled());
+        assertTrue(Main.isDebugEnabled());
+
+        Main.logLevel = 4;
+        assertFalse(Main.isTraceEnabled());
+        assertTrue(Main.isDebugEnabled());
+
+        Main.logLevel = 3;
+        assertFalse(Main.isTraceEnabled());
+        assertFalse(Main.isDebugEnabled());
 
+        Main.logLevel = defaultLevel;
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
index f675fda..3d28758 100644
--- a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
@@ -15,7 +15,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
- * Unit tests for class AlignInLineAction.
+ * Unit tests for class {@link AlignInLineAction}.
  */
 public final class AlignInLineActionTest {
 
diff --git a/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java
new file mode 100644
index 0000000..1e5b391
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java
@@ -0,0 +1,57 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.CombineWayAction.NodeGraph;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.io.IllegalDataException;
+import org.openstreetmap.josm.io.OsmReader;
+
+/**
+ * Unit tests for class {@link CombineWayAction}.
+ */
+public class CombineWayActionTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Non-regression test for bug #11957.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if OSM parsing fails
+     */
+    @Test
+    public void testTicket11957() throws IOException, IllegalDataException {
+        try (InputStream is = new FileInputStream(TestUtils.getRegressionDataFile(11957, "data.osm"))) {
+            DataSet ds = OsmReader.parseDataSet(is, null);
+            NodeGraph graph = NodeGraph.createNearlyUndirectedGraphFromNodeWays(ds.getWays());
+            List<Node> path = graph.buildSpanningPath();
+            assertEquals(10, path.size());
+            Set<Long> firstAndLastObtained = new HashSet<>();
+            firstAndLastObtained.add(path.get(0).getId());
+            firstAndLastObtained.add(path.get(path.size()-1).getId());
+            Set<Long> firstAndLastExpected = new HashSet<>();
+            firstAndLastExpected.add(1618969016L);
+            firstAndLastExpected.add(35213705L);
+            assertEquals(firstAndLastExpected, firstAndLastObtained);
+        }
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
index 5c615b6..426b4e7 100644
--- a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
@@ -1,8 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -13,24 +12,36 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 
+/**
+ * Unit tests for class {@link CopyAction}.
+ */
 public class CopyActionTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void setUpBeforeClass() {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    /**
+     * Test of {@link CopyAction#getCopyString} method for a single way.
+     */
     @Test
-    public void testCopyStringWay() throws Exception {
+    public void testCopyStringWay() {
         final Way way = new Way(123L);
-        assertThat(CopyAction.getCopyString(Collections.singleton(way)), is("way 123"));
+        assertEquals("way 123", CopyAction.getCopyString(Collections.singleton(way)));
     }
 
+    /**
+     * Test of {@link CopyAction#getCopyString} method for a way and a relation.
+     */
     @Test
-    public void testCopyStringWayRelation() throws Exception {
+    public void testCopyStringWayRelation() {
         final Way way = new Way(123L);
         final Relation relation = new Relation(456);
-        assertThat(CopyAction.getCopyString(Arrays.asList(way, relation)), is("way 123,relation 456"));
-        assertThat(CopyAction.getCopyString(Arrays.asList(relation, way)), is("relation 456,way 123"));
+        assertEquals("way 123,relation 456", CopyAction.getCopyString(Arrays.asList(way, relation)));
+        assertEquals("relation 456,way 123", CopyAction.getCopyString(Arrays.asList(relation, way)));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
index 1992aa7..99e1151 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.actions;
 
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.awt.geom.Area;
 import java.lang.reflect.Field;
@@ -30,7 +31,7 @@ import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
 
 /**
- * Unit tests for class CreateCircleAction.
+ * Unit tests for class {@link CreateCircleAction}.
  */
 public final class CreateCircleActionTest {
 
@@ -49,6 +50,8 @@ public final class CreateCircleActionTest {
      *
      * I don't know why, but in other tests there are no problem to add selected primitives
      * but in this case there is a problem with an even listener of selection change.
+     * @param p primitive
+     * @param ds data set
      */
     public void addSelected(OsmPrimitive p, DataSet ds) {
         try {
@@ -59,7 +62,7 @@ public final class CreateCircleActionTest {
             method.invoke(ds, Collections.singleton(p), false);
         } catch (Exception e) {
             e.printStackTrace();
-            assertTrue("Can't add OsmPrimitive to dataset", false);
+            fail("Can't add OsmPrimitive to dataset: " + e.getMessage());
         }
     }
 
@@ -161,7 +164,7 @@ public final class CreateCircleActionTest {
             rlCache.set(null, new GeoPropertyIndex<Boolean>(trafficHand, 24));
         } catch (Exception e) {
             e.printStackTrace();
-            assertTrue("Impossible to mock left/right hand database", false);
+            fail("Impossible to mock left/right hand database: " + e.getMessage());
         }
 
         CreateCircleAction action = new CreateCircleAction();
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
index 97c6d3c..97b4c46 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
+++ b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
@@ -4,6 +4,7 @@ import org.junit.BeforeClass
 import org.junit.Test
 import org.openstreetmap.josm.JOSMFixture
 import org.openstreetmap.josm.TestUtils
+import org.openstreetmap.josm.actions.search.SearchAction
 import org.openstreetmap.josm.actions.search.SearchCompiler
 import org.openstreetmap.josm.data.osm.Relation
 import org.openstreetmap.josm.data.osm.Way
@@ -25,6 +26,13 @@ class CreateMultipolygonActionTest {
         return refToRole;
     }
 
+    static def regexpSearch(String search) {
+        def setting = new SearchAction.SearchSetting()
+        setting.text = search
+        setting.regexSearch = true
+        return setting
+    }
+
     @Test
     public void testCreate1() {
         def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null);
@@ -36,7 +44,7 @@ class CreateMultipolygonActionTest {
     @Test
     public void testCreate2() {
         def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null);
-        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1.", false, false))
+        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1."))
         def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null)
         assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1.1:inner, 1.1.2:inner]"
     }
@@ -44,11 +52,11 @@ class CreateMultipolygonActionTest {
     @Test
     public void testUpdate1() {
         def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null);
-        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=\".*1\$\"", false, true))
+        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=\".*1\$\"")))
         def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null)
         assert mp.b.getMembersCount() == 3
         assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer]"
-        def ways2 = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1.2", false, true))
+        def ways2 = Utils.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=1.2")))
         def mp2 = CreateMultipolygonAction.createMultipolygonCommand(ways2 as Collection<Way>, mp.b)
         assert mp2.b.getMembersCount() == 4
         assert getRefToRoleMap(mp2.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer, 1.2:inner]"
@@ -57,10 +65,10 @@ class CreateMultipolygonActionTest {
     @Test
     public void testUpdate2() {
         def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null);
-        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1.1", false, false))
+        def ways = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1.1"))
         def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null)
         assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1.1:inner]"
-        def ways2 = Utils.filter(ds.getWays(), SearchCompiler.compile("ref=1.1 OR ref=1.2 OR ref=1.1.2", false, true))
+        def ways2 = Utils.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=1.1 OR ref=1.2 OR ref=1.1.2")))
         def mp2 = CreateMultipolygonAction.createMultipolygonCommand(ways2 as Collection<Way>, mp.b)
         assert getRefToRoleMap(mp2.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer, 1.1.2:outer, 1.2:inner]"
     }
diff --git a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
index 37221a9..39353d7 100644
--- a/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/JoinAreasActionTest.java
@@ -1,6 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
 
+import static org.junit.Assert.assertEquals;
+
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -10,6 +12,7 @@ import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.IllegalDataException;
@@ -42,4 +45,26 @@ public class JoinAreasActionTest {
             // new JoinAreasAction().join(ds.getWays());
         }
     }
+
+    /**
+     * Non-regression test for bug #11992.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if OSM parsing fails
+     */
+    @Test
+    public void testTicket11992() throws IOException, IllegalDataException {
+        try (InputStream is = new FileInputStream(TestUtils.getRegressionDataFile(11992, "shapes.osm"))) {
+            DataSet ds = OsmReader.parseDataSet(is, null);
+            assertEquals(10, ds.getWays().size());
+            Main.map.mapView.addLayer(new OsmDataLayer(ds, null, null));
+            for (String ref : new String[]{"A", "B", "C", "D", "E"}) {
+                System.out.print("Joining ways " + ref);
+                SearchAction.search("type:way ref="+ref, SearchAction.SearchMode.replace);
+                assertEquals(2, ds.getSelectedWays().size());
+                Main.main.menu.joinAreas.join(ds.getSelectedWays());
+                assertEquals(1, ds.getSelectedWays().size());
+                System.out.println(" ==> OK");
+            }
+        }
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
index 71f0fbe..4472ba0 100644
--- a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
@@ -17,7 +17,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
- * Unit tests for class SplitWayAction.
+ * Unit tests for class {@link SplitWayAction}.
  */
 public final class SplitWayActionTest {
 
@@ -41,7 +41,7 @@ public final class SplitWayActionTest {
      * see #11184
      */
     @Test
-    public void test11184() throws Exception {
+    public void testTicket11184() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
diff --git a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
index 3d790b2..d17aae9 100644
--- a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
@@ -16,7 +16,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
- * Unit tests for class UnJoinNodeWayAction.
+ * Unit tests for class {@link UnJoinNodeWayAction}.
  */
 public final class UnJoinNodeWayActionTest {
 
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
new file mode 100644
index 0000000..33474a2
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTaskTest.java
@@ -0,0 +1,60 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.concurrent.ExecutionException;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.gpx.GpxData;
+
+/**
+ * Unit tests for class {@link DownloadGpsTask}.
+ */
+public class DownloadGpsTaskTest {
+
+    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/data_nodist/munich.gpx";
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code DownloadGpsTask#acceptsUrl} method.
+     */
+    @Test
+    public void testAcceptsURL() {
+        DownloadGpsTask task = new DownloadGpsTask();
+        assertFalse(task.acceptsUrl(null));
+        assertFalse(task.acceptsUrl(""));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/trackpoints?bbox=0,51.5,0.25,51.75"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/trackpoints?bbox=0,51.5,0.25,51.75&page=0"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/trace/5000/data"));
+        assertTrue(task.acceptsUrl("http://www.openstreetmap.org/trace/5000/data"));
+        assertTrue(task.acceptsUrl("http://www.trackmyjourney.co.uk/exportgpx.php?session=S6rZR2Bh6GwX1wpB0C&trk=79292"));
+        assertTrue(task.acceptsUrl(REMOTE_FILE));
+    }
+
+    /**
+     * Unit test of {@code DownloadGpsTask#loadUrl} method with an external file.
+     * @throws ExecutionException if the computation threw an exception
+     * @throws InterruptedException if the current thread was interrupted while waiting
+     */
+    @Test
+    public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        DownloadGpsTask task = new DownloadGpsTask();
+        task.loadUrl(false, REMOTE_FILE, null).get();
+        GpxData data = task.getDownloadedData();
+        assertNotNull(data);
+        assertFalse(data.waypoints.isEmpty());
+        assertFalse(data.tracks.isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java
new file mode 100644
index 0000000..4188fc4
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTaskTest.java
@@ -0,0 +1,58 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.concurrent.ExecutionException;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.NoteData;
+
+/**
+ * Unit tests for class {@link DownloadNotesTask}.
+ */
+public class DownloadNotesTaskTest {
+
+    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/test/data/planet-notes-extract.osn";
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code DownloadNotesTask#acceptsUrl} method.
+     */
+    @Test
+    public void testAcceptsURL() {
+        DownloadNotesTask task = new DownloadNotesTask();
+        assertFalse(task.acceptsUrl(null));
+        assertFalse(task.acceptsUrl(""));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes?bbox=-0.65094,51.312159,0.374908,51.669148"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.json?bbox=-0.65094,51.312159,0.374908,51.669148"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.xml?bbox=-0.65094,51.312159,0.374908,51.669148"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/notes.gpx?bbox=-0.65094,51.312159,0.374908,51.669148"));
+        assertTrue(task.acceptsUrl(REMOTE_FILE));
+    }
+
+    /**
+     * Unit test of {@code DownloadNotesTask#loadUrl} method with an external file.
+     * @throws ExecutionException if the computation threw an exception
+     * @throws InterruptedException if the current thread was interrupted while waiting
+     */
+    @Test
+    public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        DownloadNotesTask task = new DownloadNotesTask();
+        task.loadUrl(false, REMOTE_FILE, null).get();
+        NoteData data = task.getDownloadedData();
+        assertNotNull(data);
+        assertFalse(data.getNotes().isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java
new file mode 100644
index 0000000..8717731
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskTest.java
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.concurrent.ExecutionException;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.DataSet;
+
+/**
+ * Unit tests for class {@link DownloadOsmTask}.
+ */
+public class DownloadOsmTaskTest {
+
+    private static final String REMOTE_FILE = "https://josm.openstreetmap.de/export/head/josm/trunk/data_nodist/direction-arrows.osm";
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Unit test of {@code DownloadOsmTask#acceptsUrl} method.
+     */
+    @Test
+    public void testAcceptsURL() {
+        DownloadOsmTask task = new DownloadOsmTask();
+        assertFalse(task.acceptsUrl(null));
+        assertFalse(task.acceptsUrl(""));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/node/100"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/way/100"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/relation/100"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/nodes?nodes=101,102,103"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/ways?ways=101,102,103"));
+        assertTrue(task.acceptsUrl("http://api.openstreetmap.org/api/0.6/relations?relations=101,102,103"));
+        assertTrue(task.acceptsUrl(REMOTE_FILE));
+    }
+
+    /**
+     * Unit test of {@code DownloadOsmTask#loadUrl} method with an external file.
+     * @throws ExecutionException if the computation threw an exception
+     * @throws InterruptedException if the current thread was interrupted while waiting
+     */
+    @Test
+    public void testDownloadExternalFile() throws InterruptedException, ExecutionException {
+        DownloadOsmTask task = new DownloadOsmTask();
+        task.loadUrl(false, REMOTE_FILE, null).get();
+        DataSet ds = task.getDownloadedData();
+        assertNotNull(ds);
+        assertFalse(ds.getNodes().isEmpty());
+        assertFalse(ds.getWays().isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
new file mode 100644
index 0000000..7b602ed
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java
@@ -0,0 +1,98 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.mapmode;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.swing.JList;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests for class {@link DrawAction}.
+ */
+public class DrawActionTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(true);
+    }
+
+    /**
+     * Non regression test case for bug #12011.
+     * Add a new node in the middle of way then undo. The rendering of the node, selected, must not cause any crash in OsmPrimitivRenderer.
+     * @throws SecurityException see {@link Class#getDeclaredField} for details
+     * @throws NoSuchFieldException see {@link Class#getDeclaredField} for details
+     * @throws IllegalAccessException see {@link Field#set} for details
+     * @throws IllegalArgumentException see {@link Field#set} for details
+     */
+    @Test
+    public void testTicket12011() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
+        DataSet dataSet = new DataSet();
+        OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
+
+        Field mapView = MapFrame.class.getDeclaredField("mapView");
+        mapView.setAccessible(true);
+        mapView.set(Main.map, new MapViewMock(dataSet, layer));
+
+        Node n1 = new Node(new EastNorth(0, 0));
+        Node n2 = new Node(new EastNorth(100, 0));
+
+        dataSet.addPrimitive(n1);
+        dataSet.addPrimitive(n2);
+
+        Way w = new Way();
+        w.setNodes(Arrays.asList(new Node[] {n1, n2}));
+        dataSet.addPrimitive(w);
+
+        Main.main.addLayer(layer);
+        assertTrue(Main.map.selectDrawTool(false));
+
+        Main.map.mapModeDraw.mouseReleased(new MouseEvent(
+                Main.map,
+                MouseEvent.MOUSE_RELEASED,
+                2000,
+                InputEvent.BUTTON1_MASK,
+                50, 0,
+                2, false));
+
+        JList<OsmPrimitive> lstPrimitives = new JList<>();
+        OsmPrimitivRenderer renderer = new OsmPrimitivRenderer();
+
+        assertEquals(3, w.getNodesCount());
+        Collection<Node> sel = dataSet.getSelectedNodes();
+        assertEquals(1, sel.size());
+
+        Node n3 = sel.iterator().next();
+
+        assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
+
+        Main.main.undoRedo.undo();
+
+        assertEquals(2, w.getNodesCount());
+        assertTrue(dataSet.getSelectedNodes().isEmpty());
+
+        assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
new file mode 100644
index 0000000..7fb6c5b
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/MapViewMock.java
@@ -0,0 +1,69 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.mapmode;
+
+import java.awt.Cursor;
+import java.awt.event.MouseListener;
+import java.awt.geom.Point2D;
+
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+class MapViewMock extends MapView {
+    private final OsmDataLayer layer;
+    private final DataSet currentDataSet;
+
+    MapViewMock(DataSet dataSet, OsmDataLayer layer) {
+        super(null, null);
+        this.layer = layer;
+        this.currentDataSet = dataSet;
+    }
+
+    @Override
+    public EastNorth getEastNorth(int x, int y) {
+        return new EastNorth(x, y);
+    }
+
+    @Override
+    public void addMouseListener(MouseListener ml) {}
+
+    @Override
+    public void removeMouseListener(MouseListener ml) {}
+
+    @Override
+    public void setVirtualNodesEnabled(boolean enabled) {}
+
+    @Override
+    public void setNewCursor(Cursor cursor, Object reference) {}
+
+    @Override
+    public void setNewCursor(int cursor, Object reference) {}
+
+    @Override
+    public boolean isActiveLayerVisible() {
+        return true;
+    }
+
+    @Override
+    public void requestClearRect() {}
+
+    @Override
+    public Point2D getPoint2D(EastNorth p) {
+        return new Point2D.Double(p.getX(), p.getY());
+    }
+
+    @Override
+    public void setActiveLayer(Layer layer) {}
+
+    @Override
+    public Layer getActiveLayer() {
+        return layer;
+    }
+
+    @Override
+    protected DataSet getCurrentDataSet() {
+        return currentDataSet;
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
index 82eb98b..a0a4785 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
@@ -6,11 +6,8 @@ import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.awt.Cursor;
 import java.awt.event.InputEvent;
 import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.geom.Point2D;
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.Collection;
@@ -23,90 +20,15 @@ import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.MapFrame;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.tools.Predicate;
 
 /**
  * Unit tests for class {@link SelectAction}.
  */
 public class SelectActionTest {
 
-    public class MapViewMock extends MapView {
-        public OsmDataLayer layer;
-        public DataSet currentDataSet;
-
-        public Predicate<OsmPrimitive> isSelectablePredicate =
-                new Predicate<OsmPrimitive>() {
-                    @Override
-                    public boolean evaluate(OsmPrimitive prim) {
-                        return true;
-                    }
-                };
-
-        MapViewMock(DataSet dataSet, OsmDataLayer layer) {
-            super(null, null);
-            this.layer = layer;
-            this.currentDataSet = dataSet;
-        }
-
-        @Override
-        public EastNorth getEastNorth(int x, int y) {
-            return new EastNorth(x, y);
-        }
-
-        @Override
-        public void addMouseListener(MouseListener ml) {}
-
-        @Override
-        public void removeMouseListener(MouseListener ml) {}
-
-        public void addMouseMotionListener(MouseListener ml) {}
-
-        public void removeMouseMotionListener(MouseListener ml) {}
-
-        public void mvRepaint() {}
-
-        @Override
-        public void setVirtualNodesEnabled(boolean enabled) {}
-
-        @Override
-        public void setNewCursor(Cursor cursor, Object reference) {}
-
-        @Override
-        public void setNewCursor(int cursor, Object reference) {}
-
-        @Override
-        public boolean isActiveLayerVisible() {
-            return true;
-        }
-
-        @Override
-        public void requestClearRect() {}
-
-        @Override
-        public Point2D getPoint2D(EastNorth p) {
-            return new Point2D.Double(p.getX(), p.getY());
-        }
-
-        @Override
-        public void setActiveLayer(Layer layer) {}
-
-        @Override
-        public Layer getActiveLayer() {
-            return layer;
-        }
-
-        @Override
-        protected DataSet getCurrentDataSet() {
-            return currentDataSet;
-        }
-    }
-
     /**
      * Override some configuration variables without change in preferences.xml
      */
@@ -124,7 +46,7 @@ public class SelectActionTest {
     boolean nodesMerged;
 
     class SelectActionMock extends SelectAction {
-        public SelectActionMock(MapFrame mapFrame, DataSet dataSet, OsmDataLayer layer) {
+        SelectActionMock(MapFrame mapFrame, DataSet dataSet, OsmDataLayer layer) {
             super(mapFrame);
             try {
                 Field mv = SelectAction.class.getDeclaredField("mv");
@@ -149,7 +71,7 @@ public class SelectActionTest {
      * Setup test.
      */
     @BeforeClass
-    public static void setUp() {
+    public static void setUpBeforeClass() {
         JOSMFixture.createUnitTestFixture().init(true);
     }
 
diff --git a/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java b/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
index 8de3341..7176e78 100644
--- a/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
@@ -1,17 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions.search;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
 import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
+import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationData;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.WayData;
 
+/**
+ * Unit tests for class {@link SearchCompiler}.
+ */
 public class SearchCompilerTest {
 
     /**
@@ -22,54 +36,125 @@ public class SearchCompilerTest {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    private static final class SearchContext {
+        final DataSet ds = new DataSet();
+        final Node n1 = new Node(new LatLon(0, 0));
+        final Node n2 = new Node(new LatLon(5, 5));
+        final Way w1 = new Way();
+        final Way w2 = new Way();
+        final Relation r1 = new Relation();
+        final Relation r2 = new Relation();
+
+        private final Match m;
+        private final Match n;
+
+        private SearchContext(String state) throws ParseError {
+            m = SearchCompiler.compile(state);
+            n = SearchCompiler.compile('-' + state);
+            ds.addPrimitive(n1);
+            ds.addPrimitive(n2);
+            w1.addNode(n1);
+            w1.addNode(n2);
+            w2.addNode(n1);
+            w2.addNode(n2);
+            ds.addPrimitive(w1);
+            ds.addPrimitive(w2);
+            r1.addMember(new RelationMember("", w1));
+            r1.addMember(new RelationMember("", w2));
+            r2.addMember(new RelationMember("", w1));
+            r2.addMember(new RelationMember("", w2));
+            ds.addPrimitive(r1);
+            ds.addPrimitive(r2);
+        }
+
+        private void match(OsmPrimitive p, boolean cond) {
+            if (cond) {
+                assertTrue(p.toString(), m.match(p));
+                assertFalse(p.toString(), n.match(p));
+            } else {
+                assertFalse(p.toString(), m.match(p));
+                assertTrue(p.toString(), n.match(p));
+            }
+        }
+    }
+
     protected OsmPrimitive newPrimitive(String key, String value) {
         final Node p = new Node();
         p.put(key, value);
         return p;
     }
 
+    /**
+     * Search anything.
+     * @throws ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testAny() throws Exception {
-        final SearchCompiler.Match c = SearchCompiler.compile("foo", false, false);
-        Assert.assertTrue(c.match(newPrimitive("foobar", "true")));
-        Assert.assertTrue(c.match(newPrimitive("name", "hello-foo-xy")));
-        Assert.assertFalse(c.match(newPrimitive("name", "X")));
+    public void testAny() throws ParseError {
+        final SearchCompiler.Match c = SearchCompiler.compile("foo");
+        assertTrue(c.match(newPrimitive("foobar", "true")));
+        assertTrue(c.match(newPrimitive("name", "hello-foo-xy")));
+        assertFalse(c.match(newPrimitive("name", "X")));
     }
 
+    /**
+     * Search by equality key=value.
+     * @throws ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testEquals() throws Exception {
-        final SearchCompiler.Match c = SearchCompiler.compile("foo=bar", false, false);
-        Assert.assertFalse(c.match(newPrimitive("foobar", "true")));
-        Assert.assertTrue(c.match(newPrimitive("foo", "bar")));
-        Assert.assertFalse(c.match(newPrimitive("fooX", "bar")));
-        Assert.assertFalse(c.match(newPrimitive("foo", "barX")));
+    public void testEquals() throws ParseError {
+        final SearchCompiler.Match c = SearchCompiler.compile("foo=bar");
+        assertFalse(c.match(newPrimitive("foobar", "true")));
+        assertTrue(c.match(newPrimitive("foo", "bar")));
+        assertFalse(c.match(newPrimitive("fooX", "bar")));
+        assertFalse(c.match(newPrimitive("foo", "barX")));
     }
 
+    /**
+     * Search by comparison.
+     * @throws ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testCompare() throws Exception {
-        final SearchCompiler.Match c1 = SearchCompiler.compile("start_date>1950", false, false);
-        Assert.assertTrue(c1.match(newPrimitive("start_date", "1950-01-01")));
-        Assert.assertTrue(c1.match(newPrimitive("start_date", "1960")));
-        Assert.assertFalse(c1.match(newPrimitive("start_date", "1950")));
-        Assert.assertFalse(c1.match(newPrimitive("start_date", "1000")));
-        Assert.assertTrue(c1.match(newPrimitive("start_date", "101010")));
-        final SearchCompiler.Match c2 = SearchCompiler.compile("start_date<1960", false, false);
-        Assert.assertTrue(c2.match(newPrimitive("start_date", "1950-01-01")));
-        Assert.assertFalse(c2.match(newPrimitive("start_date", "1960")));
-        Assert.assertTrue(c2.match(newPrimitive("start_date", "1950")));
-        Assert.assertTrue(c2.match(newPrimitive("start_date", "1000")));
-        Assert.assertTrue(c2.match(newPrimitive("start_date", "200")));
-        final SearchCompiler.Match c3 = SearchCompiler.compile("name<I", false, false);
-        Assert.assertTrue(c3.match(newPrimitive("name", "Alpha")));
-        Assert.assertFalse(c3.match(newPrimitive("name", "Sigma")));
-        final SearchCompiler.Match c4 = SearchCompiler.compile("\"start_date\"<1960", false, false);
-        Assert.assertTrue(c4.match(newPrimitive("start_date", "1950-01-01")));
-        Assert.assertFalse(c4.match(newPrimitive("start_date", "2000")));
+    public void testCompare() throws ParseError {
+        final SearchCompiler.Match c1 = SearchCompiler.compile("start_date>1950");
+        assertTrue(c1.match(newPrimitive("start_date", "1950-01-01")));
+        assertTrue(c1.match(newPrimitive("start_date", "1960")));
+        assertFalse(c1.match(newPrimitive("start_date", "1950")));
+        assertFalse(c1.match(newPrimitive("start_date", "1000")));
+        assertTrue(c1.match(newPrimitive("start_date", "101010")));
+
+        final SearchCompiler.Match c2 = SearchCompiler.compile("start_date<1960");
+        assertTrue(c2.match(newPrimitive("start_date", "1950-01-01")));
+        assertFalse(c2.match(newPrimitive("start_date", "1960")));
+        assertTrue(c2.match(newPrimitive("start_date", "1950")));
+        assertTrue(c2.match(newPrimitive("start_date", "1000")));
+        assertTrue(c2.match(newPrimitive("start_date", "200")));
+
+        final SearchCompiler.Match c3 = SearchCompiler.compile("name<I");
+        assertTrue(c3.match(newPrimitive("name", "Alpha")));
+        assertFalse(c3.match(newPrimitive("name", "Sigma")));
 
+        final SearchCompiler.Match c4 = SearchCompiler.compile("\"start_date\"<1960");
+        assertTrue(c4.match(newPrimitive("start_date", "1950-01-01")));
+        assertFalse(c4.match(newPrimitive("start_date", "2000")));
+
+        final SearchCompiler.Match c5 = SearchCompiler.compile("height>180");
+        assertTrue(c5.match(newPrimitive("height", "200")));
+        assertTrue(c5.match(newPrimitive("height", "99999")));
+        assertFalse(c5.match(newPrimitive("height", "50")));
+        assertFalse(c5.match(newPrimitive("height", "-9999")));
+        assertFalse(c5.match(newPrimitive("height", "fixme")));
+
+        final SearchCompiler.Match c6 = SearchCompiler.compile("name>C");
+        assertTrue(c6.match(newPrimitive("name", "Delta")));
+        assertFalse(c6.match(newPrimitive("name", "Alpha")));
     }
 
+    /**
+     * Search by nth.
+     * @throws ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testNth() throws Exception {
+    public void testNth() throws ParseError {
         final DataSet dataSet = new DataSet();
         final Way way = new Way();
         final Node node0 = new Node(new LatLon(1, 1));
@@ -82,19 +167,215 @@ public class SearchCompilerTest {
         way.addNode(node0);
         way.addNode(node1);
         way.addNode(node2);
-        Assert.assertFalse(SearchCompiler.compile("nth:2", false, false).match(node1));
-        Assert.assertTrue(SearchCompiler.compile("nth:1", false, false).match(node1));
-        Assert.assertFalse(SearchCompiler.compile("nth:0", false, false).match(node1));
-        Assert.assertTrue(SearchCompiler.compile("nth:0", false, false).match(node0));
-        Assert.assertTrue(SearchCompiler.compile("nth:2", false, false).match(node2));
-        Assert.assertTrue(SearchCompiler.compile("nth:-1", false, false).match(node2));
-        Assert.assertTrue(SearchCompiler.compile("nth:-2", false, false).match(node1));
-        Assert.assertTrue(SearchCompiler.compile("nth:-3", false, false).match(node0));
+        assertFalse(SearchCompiler.compile("nth:2").match(node1));
+        assertTrue(SearchCompiler.compile("nth:1").match(node1));
+        assertFalse(SearchCompiler.compile("nth:0").match(node1));
+        assertTrue(SearchCompiler.compile("nth:0").match(node0));
+        assertTrue(SearchCompiler.compile("nth:2").match(node2));
+        assertTrue(SearchCompiler.compile("nth:-1").match(node2));
+        assertTrue(SearchCompiler.compile("nth:-2").match(node1));
+        assertTrue(SearchCompiler.compile("nth:-3").match(node0));
     }
 
+    /**
+     * Search by negative nth.
+     * @throws ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testNthParseNegative() throws Exception {
-        Assert.assertThat(SearchCompiler.compile("nth:-1", false, false).toString(), CoreMatchers.is("Nth{nth=-1, modulo=false}"));
+    public void testNthParseNegative() throws ParseError {
+        assertThat(SearchCompiler.compile("nth:-1").toString(), CoreMatchers.is("Nth{nth=-1, modulo=false}"));
+    }
 
+    /**
+     * Search by modified status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testModified() throws ParseError {
+        SearchContext sc = new SearchContext("modified");
+        // Not modified but new
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            assertFalse(p.toString(), p.isModified());
+            assertTrue(p.toString(), p.isNewOrUndeleted());
+            sc.match(p, true);
+        }
+        // Modified and new
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            p.setModified(true);
+            assertTrue(p.toString(), p.isModified());
+            assertTrue(p.toString(), p.isNewOrUndeleted());
+            sc.match(p, true);
+        }
+        // Modified but not new
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            p.setOsmId(1, 1);
+            assertTrue(p.toString(), p.isModified());
+            assertFalse(p.toString(), p.isNewOrUndeleted());
+            sc.match(p, true);
+        }
+        // Not modified nor new
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n2, sc.w2, sc.r2}) {
+            p.setOsmId(2, 2);
+            assertFalse(p.toString(), p.isModified());
+            assertFalse(p.toString(), p.isNewOrUndeleted());
+            sc.match(p, false);
+        }
+    }
+
+    /**
+     * Search by selected status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testSelected() throws ParseError {
+        SearchContext sc = new SearchContext("selected");
+        // Not selected
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            assertFalse(p.toString(), p.isSelected());
+            sc.match(p, false);
+        }
+        // Selected
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n2, sc.w2, sc.r2}) {
+            sc.ds.addSelected(p);
+            assertTrue(p.toString(), p.isSelected());
+            sc.match(p, true);
+        }
+    }
+
+    /**
+     * Search by incomplete status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testIncomplete() throws ParseError {
+        SearchContext sc = new SearchContext("incomplete");
+        // Not incomplete
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            assertFalse(p.toString(), p.isIncomplete());
+            sc.match(p, false);
+        }
+        // Incomplete
+        sc.n2.setCoor(null);
+        WayData wd = new WayData();
+        wd.setIncomplete(true);
+        sc.w2.load(wd);
+        RelationData rd = new RelationData();
+        rd.setIncomplete(true);
+        sc.r2.load(rd);
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n2, sc.w2, sc.r2}) {
+            assertTrue(p.toString(), p.isIncomplete());
+            sc.match(p, true);
+        }
+    }
+
+    /**
+     * Search by untagged status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testUntagged() throws ParseError {
+        SearchContext sc = new SearchContext("untagged");
+        // Untagged
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            assertFalse(p.toString(), p.isTagged());
+            sc.match(p, true);
+        }
+        // Tagged
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n2, sc.w2, sc.r2}) {
+            p.put("foo", "bar");
+            assertTrue(p.toString(), p.isTagged());
+            sc.match(p, false);
+        }
+    }
+
+    /**
+     * Search by closed status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testClosed() throws ParseError {
+        SearchContext sc = new SearchContext("closed");
+        // Closed
+        sc.w1.addNode(sc.n1);
+        for (Way w : new Way[]{sc.w1}) {
+            assertTrue(w.toString(), w.isClosed());
+            sc.match(w, true);
+        }
+        // Unclosed
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w2, sc.r1, sc.r2}) {
+            sc.match(p, false);
+        }
+    }
+
+    /**
+     * Search by new status.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testNew() throws ParseError {
+        SearchContext sc = new SearchContext("new");
+        // New
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.w1, sc.r1}) {
+            assertTrue(p.toString(), p.isNew());
+            sc.match(p, true);
+        }
+        // Not new
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n2, sc.w2, sc.r2}) {
+            p.setOsmId(2, 2);
+            assertFalse(p.toString(), p.isNew());
+            sc.match(p, false);
+        }
+    }
+
+    /**
+     * Search for node objects.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testTypeNode() throws ParseError {
+        final SearchContext sc = new SearchContext("type:node");
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
+            sc.match(p, OsmPrimitiveType.NODE.equals(p.getType()));
+        }
+    }
+
+    /**
+     * Search for way objects.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testTypeWay() throws ParseError {
+        final SearchContext sc = new SearchContext("type:way");
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
+            sc.match(p, OsmPrimitiveType.WAY.equals(p.getType()));
+        }
+    }
+
+    /**
+     * Search for relation objects.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testTypeRelation() throws ParseError {
+        final SearchContext sc = new SearchContext("type:relation");
+        for (OsmPrimitive p : new OsmPrimitive[]{sc.n1, sc.n2, sc.w1, sc.w2, sc.r1, sc.r2}) {
+            sc.match(p, OsmPrimitiveType.RELATION.equals(p.getType()));
+        }
+    }
+
+    /**
+     * Search for users.
+     * @throws ParseError if an error has been encountered while compiling
+     */
+    @Test
+    public void testUser() throws ParseError {
+        final SearchContext foobar = new SearchContext("user:foobar");
+        foobar.n1.setUser(User.createLocalUser("foobar"));
+        foobar.match(foobar.n1, true);
+        foobar.match(foobar.n2, false);
+        final SearchContext anonymous = new SearchContext("user:anonymous");
+        anonymous.n1.setUser(User.createLocalUser("foobar"));
+        anonymous.match(anonymous.n1, false);
+        anonymous.match(anonymous.n2, true);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
new file mode 100644
index 0000000..10c7ce9
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
@@ -0,0 +1,56 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.command.conflict;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link ConflictAddCommand} class.
+ */
+public class ConflictAddCommandTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(true);
+        Main.map.mapView.addLayer(new OsmDataLayer(new DataSet(), null, null));
+    }
+
+    /**
+     * Unit test of {@code ConflictAddCommand#executeCommand} and {@code ConflictAddCommand#undoCommand} methods.
+     */
+    @Test
+    public void testExecuteUndoCommand() {
+        OsmDataLayer layer = Main.map.mapView.getEditLayer();
+        Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
+        ConflictAddCommand cmd = new ConflictAddCommand(layer, conflict);
+        assertTrue(cmd.executeCommand());
+        assertFalse(layer.getConflicts().isEmpty());
+        assertTrue(layer.getConflicts().hasConflict(conflict));
+        cmd.undoCommand();
+        assertFalse(layer.getConflicts().hasConflict(conflict));
+        assertTrue(layer.getConflicts().isEmpty());
+    }
+
+    /**
+     * Unit test of {@code ConflictAddCommand#getDescriptionIcon} method.
+     */
+    @Test
+    public void testGetDescriptionIcon() {
+        OsmDataLayer layer = Main.map.mapView.getEditLayer();
+        Conflict<Node> conflict = new Conflict<>(new Node(), new Node());
+        assertNotNull(new ConflictAddCommand(layer, conflict).getDescriptionIcon());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
new file mode 100644
index 0000000..98ecc1b
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
@@ -0,0 +1,71 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.command.conflict;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link CoordinateConflictResolveCommand} class.
+ */
+public class CoordinateConflictResolveCommandTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(true);
+        Main.map.mapView.addLayer(new OsmDataLayer(new DataSet(), null, null));
+    }
+
+    private static Conflict<Node> createConflict() {
+        return new Conflict<>(new Node(LatLon.ZERO), new Node(new LatLon(50, 50)));
+    }
+
+    /**
+     * Unit test of {@code CoordinateConflictResolveCommand#executeCommand} and {@code CoordinateConflictResolveCommand#undoCommand} methods.
+     */
+    @Test
+    public void testExecuteKeepMineUndoCommand() {
+        Conflict<Node> conflict = createConflict();
+        CoordinateConflictResolveCommand cmd = new CoordinateConflictResolveCommand(conflict, MergeDecisionType.KEEP_MINE);
+        assertTrue(cmd.executeCommand());
+        assertEquals(LatLon.ZERO, conflict.getMy().getCoor());
+        cmd.undoCommand();
+        assertEquals(LatLon.ZERO, conflict.getMy().getCoor());
+    }
+
+    /**
+     * Unit test of {@code CoordinateConflictResolveCommand#executeCommand} and {@code CoordinateConflictResolveCommand#undoCommand} methods.
+     */
+    @Test
+    public void testExecuteKeepTheirUndoCommand() {
+        Conflict<Node> conflict = createConflict();
+        CoordinateConflictResolveCommand cmd = new CoordinateConflictResolveCommand(conflict, MergeDecisionType.KEEP_THEIR);
+        assertTrue(cmd.executeCommand());
+        assertEquals(conflict.getTheir().getCoor(), conflict.getMy().getCoor());
+        cmd.undoCommand();
+        //assertEquals(LatLon.ZERO, conflict.getMy().getCoor()); // FIXME it does not work
+    }
+
+    /**
+     * Unit test of {@code CoordinateConflictResolveCommand#getDescriptionIcon} method.
+     */
+    @Test
+    public void testGetDescriptionIcon() {
+        Conflict<Node> conflict = createConflict();
+        assertNotNull(new CoordinateConflictResolveCommand(conflict, null).getDescriptionIcon());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
index 5a82304..795eeac 100644
--- a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
+++ b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
@@ -12,11 +12,15 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 
+/**
+ * Unit tests for class {@link JCSCachedTileLoaderJob}.
+ */
 public class JCSCachedTileLoaderJobTest {
+
     private static class TestCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, CacheEntry> {
         private String url;
 
-        public TestCachedTileLoaderJob(String url) throws IOException {
+        TestCachedTileLoaderJob(String url) throws IOException {
             super(getCache(), 30000, 30000, null);
             this.url = url;
         }
@@ -43,25 +47,20 @@ public class JCSCachedTileLoaderJobTest {
         protected CacheEntry createCacheEntry(byte[] content) {
             return new CacheEntry("dummy".getBytes());
         }
-
     }
 
     private static class Listener implements ICachedLoaderListener {
-        private CacheEntry data;
         private CacheEntryAttributes attributes;
-        private LoadResult result;
         private boolean ready;
 
         @Override
         public synchronized void loadingFinished(CacheEntry data, CacheEntryAttributes attributes, LoadResult result) {
-            this.data = data;
             this.attributes = attributes;
-            this.result = result;
             this.ready = true;
             this.notify();
         }
-
     }
+
     /**
      * Setup test.
      */
@@ -107,12 +106,9 @@ public class JCSCachedTileLoaderJobTest {
             }
         }
         assertEquals(responseCode, listener.attributes.getResponseCode());
-
     }
 
     private static TestCachedTileLoaderJob getStatusLoaderJob(int responseCode) throws IOException {
         return new TestCachedTileLoaderJob("http://httpstat.us/" + responseCode);
     }
-
 }
-
diff --git a/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java b/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
index 02082b2..74cdcf0 100644
--- a/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
+++ b/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
@@ -5,6 +5,9 @@ import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 
+/**
+ * Unit tests for class {@link LatLon}.
+ */
 public class LatLonTest {
 
     public static final double[] SAMPLE_VALUES = new double[]{
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
index 635a3ae..a778716 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
@@ -19,11 +19,14 @@ import org.openstreetmap.josm.data.projection.CustomProjection;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
 
+/**
+ * Unit tests for class {@link TemplatedWMSTileSource}.
+ */
 public class TemplatedWMSTileSourceTest {
 
     private ImageryInfo testImageryWMS =  new ImageryInfo("test imagery", "http://localhost", "wms", null, null);
     private ImageryInfo testImageryTMS =  new ImageryInfo("test imagery", "http://localhost", "tms", null, null);
-    //private TileSource testSource = new TemplatedWMSTileSource(testImageryWMS);
+
     /**
      * Setup test.
      */
@@ -51,7 +54,6 @@ public class TemplatedWMSTileSourceTest {
         verifyTileSquarness(source, 2270, 1323, 12);
         verifyLocation(source, new LatLon(53.5937132, 19.5652017));
         verifyLocation(source, new LatLon(53.501565692302854, 18.54455233898721));
-
     }
 
     @Test
@@ -106,7 +108,6 @@ public class TemplatedWMSTileSourceTest {
 
         verifyLocation(source, new LatLon(60, 18), 3);
         verifyLocation(source, new LatLon(60, 18));
-
     }
 
     @Test
@@ -119,7 +120,6 @@ public class TemplatedWMSTileSourceTest {
         verifyTileSquarness(source, 0, 1, 4);
         verifyLocation(source, new LatLon(60, 18.1), 3);
         verifyLocation(source, new LatLon(60, 18.1));
-
     }
 
     private void verifyMercatorTile(TemplatedWMSTileSource source, int x, int y, int z) {
@@ -128,7 +128,6 @@ public class TemplatedWMSTileSourceTest {
         ICoordinate expected = verifier.tileXYToLatLon(x, y, z - 1);
         assertEquals(expected.getLat(), result.lat(), 1e-4);
         assertEquals(expected.getLon(), result.lon(), 1e-4);
-        //assertTrue("result: " + result.toDisplayString() + " osmMercator: " +  expected.toDisplayString(), result.equalsEpsilon(expected));
         LatLon tileCenter = new Bounds(result, getTileLatLon(source, x+1, y+1, z)).getCenter();
         TileXY backwardsResult = source.latLonToTileXY(tileCenter.toCoordinate(), z);
         assertEquals(x, backwardsResult.getXIndex());
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
index c2048a6..8e70e25 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
@@ -17,6 +17,9 @@ import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projections;
 
+/**
+ * Unit tests for class {@link WMTSTileSource}.
+ */
 public class WMTSTileSourceTest {
 
     private ImageryInfo testImageryTMS =  new ImageryInfo("test imagery", "http://localhost", "tms", null, null);
@@ -27,6 +30,9 @@ public class WMTSTileSourceTest {
     private ImageryInfo testImageryWALLONIE = getImagery("test/data/wmts/WMTSCapabilities-Wallonie.xml");
     private ImageryInfo testImageryOntario = getImagery("test/data/wmts/WMTSCapabilities-Ontario.xml");
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void setUp() {
         JOSMFixture.createUnitTestFixture().init();
@@ -48,7 +54,7 @@ public class WMTSTileSourceTest {
     public void testPseudoMercator() throws MalformedURLException, IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:3857"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryPSEUDO_MERCATOR);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
 
         verifyMercatorTile(testSource, 0, 0, 1);
         verifyMercatorTile(testSource, 0, 0, 2);
@@ -79,7 +85,7 @@ public class WMTSTileSourceTest {
     public void testWALLONIE() throws MalformedURLException, IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:31370"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryWALLONIE);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
 
         assertEquals("http://geoservices.wallonie.be/arcgis/rest/services/DONNEES_BASE/FOND_PLAN_ANNOTATIONS_2012_RW_NB/"
                 + "MapServer/WMTS/tile/1.0.0/DONNEES_BASE_FOND_PLAN_ANNOTATIONS_2012_RW_NB/default/default028mm/5/1219/1063.png",
@@ -98,7 +104,7 @@ public class WMTSTileSourceTest {
     public void testWALLONIENoMatrixDimension() throws MalformedURLException, IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:31370"));
         WMTSTileSource testSource = new WMTSTileSource(getImagery("test/data/wmts/WMTSCapabilities-Wallonie-nomatrixdimension.xml"));
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
 
         Bounds wallonieBounds = new Bounds(
                 new LatLon(49.485372459967245, 2.840548314430268),
@@ -122,7 +128,7 @@ public class WMTSTileSourceTest {
     public void testWIEN() throws MalformedURLException, IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:3857"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryWIEN);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
         int zoomOffset = 9;
 
         verifyMercatorTile(testSource, 0, 0, 1, zoomOffset);
@@ -164,7 +170,7 @@ public class WMTSTileSourceTest {
     public void testGeoportalTOPOPL() throws IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:4326"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryTOPO_PL);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
         verifyTile(new LatLon(56, 12), testSource, 0, 0, 1);
         verifyTile(new LatLon(56, 12), testSource, 0, 0, 2);
         verifyTile(new LatLon(51.1268639, 16.8731360), testSource, 1, 1, 2);
@@ -186,7 +192,7 @@ public class WMTSTileSourceTest {
     public void testGeoportalORTOPL4326() throws IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:4326"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryORTO_PL);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
         verifyTile(new LatLon(53.5993712684958, 19.560669777688176), testSource, 12412, 3941, 14);
         verifyTile(new LatLon(49.783096954497786, 22.79034127751704), testSource, 17714, 10206, 14);
     }
@@ -195,7 +201,7 @@ public class WMTSTileSourceTest {
     public void testGeoportalORTOPL2180() throws IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:2180"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryORTO_PL);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
 
         verifyTile(new LatLon(53.59940948387726, 19.560544913270064), testSource, 6453, 3140, 14);
         verifyTile(new LatLon(49.782984840526055, 22.790064966993445), testSource, 9932, 9305, 14);
@@ -206,7 +212,7 @@ public class WMTSTileSourceTest {
     public void testTwoTileSetsForOneProjection() throws Exception {
         Main.setProjection(Projections.getProjectionByCode("EPSG:3857"));
         WMTSTileSource testSource = new WMTSTileSource(testImageryOntario);
-        testSource.initProjection();
+        testSource.initProjection(Main.getProjection());
         verifyTile(new LatLon(45.4105023, -75.7153702), testSource, 303751, 375502, 12);
         verifyTile(new LatLon(45.4601306, -75.7617187), testSource, 1186, 1466, 4);
 
@@ -228,7 +234,7 @@ public class WMTSTileSourceTest {
         LatLon result = new LatLon(testSource.tileXYToLatLon(x, y, z));
         LatLon expected = new LatLon(verifier.tileXYToLatLon(x, y, z + zoomOffset));
         //System.out.println(z + "/" + x + "/" + y + " - result: " + result.toDisplayString() + " osmMercator: " +  expected.toDisplayString());
-        assertEquals("Longitude" , expected.lon(), result.lon(), 1e-04);
+        assertEquals("Longitude", expected.lon(), result.lon(), 1e-04);
         assertEquals("Latitude", expected.lat(), result.lat(), 1e-04);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java b/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
index 4fd3d9d..731f816 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
@@ -13,8 +13,14 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
 import org.openstreetmap.josm.data.APIDataSet;
 
+/**
+ * Unit tests for class {@link APIDataSet}.
+ */
 public class APIDataSetTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java b/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
index c64fd8a..8b37498 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
@@ -23,8 +23,14 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projections;
 
+/**
+ * Unit tests for class {@link DataSetMerger}.
+ */
 public class DataSetMergerTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
index 9ce4379..cf112be 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
@@ -23,6 +23,9 @@ import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 
+/**
+ * Unit tests for class {@link Filter}.
+ */
 public class FilterTest {
 
     /**
@@ -34,7 +37,7 @@ public class FilterTest {
     }
 
     @Test
-    public void basic_test() throws ParseError {
+    public void basic() throws ParseError {
         DataSet ds = new DataSet();
         Node n1 = new Node(new LatLon(0, 0));
         n1.put("amenity", "parking");
@@ -62,7 +65,7 @@ public class FilterTest {
     }
 
     @Test
-    public void filter_test() throws ParseError, IllegalDataException, IOException {
+    public void filter() throws ParseError, IllegalDataException, IOException {
         for (int i : new int[] {1, 2, 3, 11, 12, 13, 14, 15}) {
             DataSet ds;
             try (InputStream is = new FileInputStream("data_nodist/filterTests.osm")) {
diff --git a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
index 7a53c12..914b37d 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
@@ -14,10 +14,12 @@ import org.openstreetmap.josm.data.coor.LatLon;
 /**
  * Some unit test cases for basic tag management on {@link OsmPrimitive}. Uses
  * {@link Node} for the tests, {@link OsmPrimitive} is abstract.
- *
  */
 public class OsmPrimitiveKeyHandlingTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
index bfa697c..9153d50 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
@@ -14,6 +14,9 @@ import org.openstreetmap.josm.data.projection.Projections;
 
 public class OsmPrimitiveTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java b/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java
index 9ff446b..600a45a 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/OsmUtilsTest.java
@@ -1,8 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import org.junit.BeforeClass;
@@ -11,6 +10,9 @@ import org.openstreetmap.josm.JOSMFixture;
 
 public class OsmUtilsTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void setUp() {
         JOSMFixture.createUnitTestFixture().init();
@@ -20,22 +22,20 @@ public class OsmUtilsTest {
     public void testCreatePrimitive() throws Exception {
         final OsmPrimitive p = OsmUtils.createPrimitive("way name=Foo railway=rail");
         assertTrue(p instanceof Way);
-        assertThat(p.keySet().size(), is(2));
-        assertThat(p.get("name"), is("Foo"));
-        assertThat(p.get("railway"), is("rail"));
+        assertEquals(2, p.keySet().size());
+        assertEquals("Foo", p.get("name"));
+        assertEquals("rail", p.get("railway"));
     }
 
     @Test
     public void testArea() throws Exception {
         final OsmPrimitive p = OsmUtils.createPrimitive("area name=Foo railway=rail");
-        assertThat(p.getType(), is(OsmPrimitiveType.WAY));
+        assertEquals(OsmPrimitiveType.WAY, p.getType());
         assertTrue(p.getKeys().equals(OsmUtils.createPrimitive("way name=Foo railway=rail").getKeys()));
-
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testCreatePrimitiveFail() throws Exception {
         OsmUtils.createPrimitive("noway name=Foo");
     }
-
 }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java b/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java
index c5bf721..8673b8c 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/QuadBucketsTest.java
@@ -22,6 +22,9 @@ import org.openstreetmap.josm.io.OsmReader;
 
 public class QuadBucketsTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
index f43579b..e0df137 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryNodeTest.java
@@ -11,6 +11,9 @@ import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.User;
 
+/**
+ * Unit tests for class {@link HistoryNode}.
+ */
 public class HistoryNodeTest {
 
     @Test
diff --git a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
index c29a75c..5b7a994 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
@@ -13,6 +13,9 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.User;
 
+/**
+ * Unit tests for class {@link HistoryWay}.
+ */
 public class HistoryWayTest {
 
     @Test
diff --git a/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java b/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java
index 987af13..2d2975f 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java
@@ -20,6 +20,9 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 
+/**
+ * Unit tests for class {@link MergeSourceBuildingVisitor}.
+ */
 public class MergeSourceBuildingVisitorTest {
 
     protected OsmPrimitive lookupByName(Collection<? extends OsmPrimitive> primitives, String name) {
diff --git a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
index e7b5895..6d1585f 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
@@ -46,7 +46,7 @@ public class SwissGridTest {
         public LatLon ll;
         public EastNorth en;
 
-        public ProjData(String name, double lon, double lat, double h1, double x, double y, double h2) {
+        ProjData(String name, double lon, double lat, double h1, double x, double y, double h2) {
             this.name = name;
             ll = new LatLon(lat, lon);
             en = new EastNorth(x, y);
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy b/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy
index ca8d33f..2e9298a 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/ConditionalKeysTest.groovy
@@ -2,7 +2,7 @@
 package org.openstreetmap.josm.data.validation.tests
 
 import org.openstreetmap.josm.JOSMFixture
-import org.openstreetmap.josm.gui.tagging.TaggingPresets
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 
 class ConditionalKeysTest extends GroovyTestCase {
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.groovy b/test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.groovy
index 2ef3f51..f4144ee 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.groovy
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/HighwaysTest.groovy
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.data.validation.tests
 import org.openstreetmap.josm.JOSMFixture
 import org.openstreetmap.josm.data.coor.LatLon
 import org.openstreetmap.josm.data.osm.DataSet
+import org.openstreetmap.josm.data.osm.Node
 import org.openstreetmap.josm.data.osm.Way
 
 class HighwaysTest extends GroovyTestCase {
@@ -16,12 +17,12 @@ class HighwaysTest extends GroovyTestCase {
     public static Way createTestSetting(String highway, String highwayLink) {
         def ds = new DataSet()
 
-        def n00 = new org.openstreetmap.josm.data.osm.Node(new LatLon(0, 0))
-        def n10 = new org.openstreetmap.josm.data.osm.Node(new LatLon(1, 0))
-        def n20 = new org.openstreetmap.josm.data.osm.Node(new LatLon(2, 0))
-        def n01 = new org.openstreetmap.josm.data.osm.Node(new LatLon(0, 1))
-        def n11 = new org.openstreetmap.josm.data.osm.Node(new LatLon(1, 1))
-        def n21 = new org.openstreetmap.josm.data.osm.Node(new LatLon(2, 1))
+        def n00 = new Node(new LatLon(0, 0))
+        def n10 = new Node(new LatLon(1, 0))
+        def n20 = new Node(new LatLon(2, 0))
+        def n01 = new Node(new LatLon(0, 1))
+        def n11 = new Node(new LatLon(1, 1))
+        def n21 = new Node(new LatLon(2, 1))
 
         ds.addPrimitive(n00)
         ds.addPrimitive(n10)
@@ -60,4 +61,17 @@ class HighwaysTest extends GroovyTestCase {
         assert !Highways.isHighwayLinkOkay(createTestSetting("secondary", "tertiary_link"))
         assert Highways.isHighwayLinkOkay(createTestSetting("residential", "residential"))
     }
+
+    void testSourceMaxSpeedUnitedKingdom() {
+        def link = createTestSetting("primary", "primary")
+        link.put("maxspeed", "60 mph")
+        link.put("source:maxspeed", "UK:nsl_single")
+        def test = new Highways()
+        test.visit(link)
+        assert test.errors.size() == 1
+        def error = test.errors.get(0)
+        assert error.isFixable()
+        assert error.getFix().executeCommand()
+        assert "GB:nsl_single".equals(link.get("source:maxspeed"))
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
index eb30703..6ba7082 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
@@ -1,10 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.validation.tests;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.StringReader;
@@ -28,11 +27,12 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.ParseResult;
 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.TagCheck;
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
 
 /**
- * JUnit Test of MapCSS TagChecker.
+ * JUnit Test of {@link MapCSSTagChecker}.
  */
 public class MapCSSTagCheckerTest {
 
@@ -46,40 +46,40 @@ public class MapCSSTagCheckerTest {
 
     static MapCSSTagChecker buildTagChecker(String css) throws ParseException {
         final MapCSSTagChecker test = new MapCSSTagChecker();
-        test.checks.putAll("test", TagCheck.readMapCSS(new StringReader(css)));
+        test.checks.putAll("test", TagCheck.readMapCSS(new StringReader(css)).parseChecks);
         return test;
     }
 
     @Test
     public void testNaturalMarsh() throws Exception {
-
-        final List<MapCSSTagChecker.TagCheck> checks = MapCSSTagChecker.TagCheck.readMapCSS(new StringReader("" +
+        ParseResult result = MapCSSTagChecker.TagCheck.readMapCSS(new StringReader("" +
                 "*[natural=marsh] {\n" +
                 "   throwWarning: tr(\"{0}={1} is deprecated\", \"{0.key}\", tag(\"natural\"));\n" +
                 "   fixRemove: \"{0.key}\";\n" +
                 "   fixAdd: \"natural=wetland\";\n" +
                 "   fixAdd: \"wetland=marsh\";\n" +
                 "}"));
-        assertThat(checks.size(), is(1));
+        final List<MapCSSTagChecker.TagCheck> checks = result.parseChecks;
+        assertEquals(1, checks.size());
+        assertTrue(result.parseErrors.isEmpty());
         final MapCSSTagChecker.TagCheck check = checks.get(0);
-        assertThat(check, notNullValue());
-        assertThat(check.getDescription(null), is("{0.key}=null is deprecated"));
-        assertThat(check.fixCommands.get(0).toString(), is("fixRemove: {0.key}"));
-        assertThat(check.fixCommands.get(1).toString(), is("fixAdd: natural=wetland"));
-        assertThat(check.fixCommands.get(2).toString(), is("fixAdd: wetland=marsh"));
+        assertNotNull(check);
+        assertEquals("{0.key}=null is deprecated", check.getDescription(null));
+        assertEquals("fixRemove: {0.key}", check.fixCommands.get(0).toString());
+        assertEquals("fixAdd: natural=wetland", check.fixCommands.get(1).toString());
+        assertEquals("fixAdd: wetland=marsh", check.fixCommands.get(2).toString());
         final Node n1 = new Node();
         n1.put("natural", "marsh");
         assertTrue(check.evaluate(n1));
-        assertThat(check.getErrorForPrimitive(n1).getMessage(), is("natural=marsh is deprecated"));
-        assertThat(check.getErrorForPrimitive(n1).getSeverity(), is(Severity.WARNING));
-        assertThat(check.fixPrimitive(n1).getDescriptionText(), is("Sequence: Fix of natural=marsh is deprecated"));
-        assertThat(((ChangePropertyCommand) check.fixPrimitive(n1).getChildren().iterator().next()).getTags().toString(),
-                is("{natural=}"));
+        assertEquals("natural=marsh is deprecated", check.getErrorForPrimitive(n1).getMessage());
+        assertEquals(Severity.WARNING, check.getErrorForPrimitive(n1).getSeverity());
+        assertEquals("Sequence: Fix of natural=marsh is deprecated", check.fixPrimitive(n1).getDescriptionText());
+        assertEquals("{natural=}", ((ChangePropertyCommand) check.fixPrimitive(n1).getChildren().iterator().next()).getTags().toString());
         final Node n2 = new Node();
         n2.put("natural", "wood");
         assertFalse(check.evaluate(n2));
-        assertThat(MapCSSTagChecker.TagCheck.insertArguments(check.rule.selectors.get(0), "The key is {0.key} and the value is {0.value}", null),
-                is("The key is natural and the value is marsh"));
+        assertEquals("The key is natural and the value is marsh",
+                MapCSSTagChecker.TagCheck.insertArguments(check.rule.selectors.get(0), "The key is {0.key} and the value is {0.value}", null));
     }
 
     @Test
@@ -89,12 +89,12 @@ public class MapCSSTagCheckerTest {
                 "throwError: \"error\";" +
                 "fixChangeKey: \"highway => construction\";\n" +
                 "fixAdd: \"highway=construction\";\n" +
-                "}")).get(0);
+                "}")).parseChecks.get(0);
         final Command command = check.fixPrimitive(p);
-        assertThat(command instanceof SequenceCommand, is(true));
+        assertTrue(command instanceof SequenceCommand);
         final Iterator<PseudoCommand> it = command.getChildren().iterator();
-        assertThat(it.next() instanceof ChangePropertyKeyCommand, is(true));
-        assertThat(it.next() instanceof ChangePropertyCommand, is(true));
+        assertTrue(it.next() instanceof ChangePropertyKeyCommand);
+        assertTrue(it.next() instanceof ChangePropertyCommand);
     }
 
     @Test
@@ -103,9 +103,9 @@ public class MapCSSTagCheckerTest {
                 "throwWarning: tr(\"has {0} but not {1}\", \"{0.key}\", \"{1.key}\");}");
         final OsmPrimitive p = OsmUtils.createPrimitive("way alt_name=Foo");
         final Collection<TestError> errors = test.getErrorsForPrimitive(p, false);
-        assertThat(errors.size(), is(1));
-        assertThat(errors.iterator().next().getMessage(), is("has alt_name but not name"));
-        assertThat(errors.iterator().next().getIgnoreSubGroup(), is("3000_*[.+_name][!name]"));
+        assertEquals(1, errors.size());
+        assertEquals("has alt_name but not name", errors.iterator().next().getMessage());
+        assertEquals("3000_*[.+_name][!name]", errors.iterator().next().getIgnoreSubGroup());
     }
 
     @Test
@@ -114,9 +114,9 @@ public class MapCSSTagCheckerTest {
                 "  throwWarning: tr(\"{0} used with {1}\", \"{0.value}\", \"{1.tag}\");}");
         final OsmPrimitive p = OsmUtils.createPrimitive("way highway=footway foot=no");
         final Collection<TestError> errors = test.getErrorsForPrimitive(p, false);
-        assertThat(errors.size(), is(1));
-        assertThat(errors.iterator().next().getMessage(), is("footway used with foot=no"));
-        assertThat(errors.iterator().next().getIgnoreSubGroup(), is("3000_way[highway=footway][foot]"));
+        assertEquals(1, errors.size());
+        assertEquals("footway used with foot=no", errors.iterator().next().getMessage());
+        assertEquals("3000_way[highway=footway][foot]", errors.iterator().next().getIgnoreSubGroup());
     }
 
     @Test
@@ -124,8 +124,8 @@ public class MapCSSTagCheckerTest {
         final MapCSSTagChecker test = buildTagChecker("" +
                 "@media (min-josm-version: 1) { *[foo] { throwWarning: \"!\"; } }\n" +
                 "@media (min-josm-version: 2147483647) { *[bar] { throwWarning: \"!\"; } }\n");
-        assertThat(test.getErrorsForPrimitive(OsmUtils.createPrimitive("way foo=1"), false).size(), is(1));
-        assertThat(test.getErrorsForPrimitive(OsmUtils.createPrimitive("way bar=1"), false).size(), is(0));
+        assertEquals(1, test.getErrorsForPrimitive(OsmUtils.createPrimitive("way foo=1"), false).size());
+        assertEquals(0, test.getErrorsForPrimitive(OsmUtils.createPrimitive("way bar=1"), false).size());
     }
 
     @Test
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java
index e1f64f7..0ccfab7 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/OpeningHourTestTest.java
@@ -3,8 +3,8 @@ package org.openstreetmap.josm.data.validation.tests;
 
 import static org.CustomMatchers.hasSize;
 import static org.CustomMatchers.isEmpty;
-import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
@@ -20,10 +20,10 @@ import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 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;
 
 /**
  * JUnit Test of "Opening hours" validation test.
@@ -55,14 +55,14 @@ public class OpeningHourTestTest {
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "09:00-21:00"), isEmpty());
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise"), isEmpty());
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise"), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise")
-                .get(0).getSeverity(), is(Severity.OTHER));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise")
-                .get(0).getPrettifiedValue(), is("Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise"));
+        assertEquals(Severity.OTHER, OPENING_HOUR_TEST.checkOpeningHourSyntax(
+                key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise").get(0).getSeverity());
+        assertEquals("Su-Th sunset-24:00,04:00-sunrise; Fr-Sa sunset-sunrise", OPENING_HOUR_TEST.checkOpeningHourSyntax(
+                key, "Su-Th sunset-24:00, 04:00-sunrise; Fr-Sa sunset-sunrise").get(0).getPrettifiedValue());
     }
 
     @Test
-    public void testI18n() throws Exception {
+    public void testI18n() {
         assertTrue(OPENING_HOUR_TEST.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "de")
                 .get(0).toString().contains("Unerwartetes Zeichen"));
         assertFalse(OPENING_HOUR_TEST.checkOpeningHourSyntax("opening_hours", ".", OpeningHourTest.CheckMode.POINTS_IN_TIME, false, "en")
@@ -77,12 +77,12 @@ public class OpeningHourTestTest {
         final String key = "opening_hours";
         final List<OpeningHourTest.OpeningHoursTestError> errors = OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Tue");
         assertThat(errors, hasSize(2));
-        assertThat(errors.get(0).getMessage(), is(key + " - Mo-Tue <--- (Please use the abbreviation \"Tu\" for \"tue\".)"));
-        assertThat(errors.get(0).getSeverity(), is(Severity.WARNING));
-        assertThat(errors.get(1).getMessage(), is(key +
+        assertEquals(key + " - Mo-Tue <--- (Please use the abbreviation \"Tu\" for \"tue\".)", errors.get(0).getMessage());
+        assertEquals(Severity.WARNING, errors.get(0).getSeverity());
+        assertEquals(key +
                 " - Mo-Tue <--- (This rule is not very explicit because there is no time selector being used."+
-                " Please add a time selector to this rule or use a comment to make it more explicit.)"));
-        assertThat(errors.get(1).getSeverity(), is(Severity.WARNING));
+                " Please add a time selector to this rule or use a comment to make it more explicit.)", errors.get(1).getMessage());
+        assertEquals(Severity.WARNING, errors.get(1).getSeverity());
     }
 
     /**
@@ -93,11 +93,11 @@ public class OpeningHourTestTest {
         final String key = "opening_hours";
         final List<OpeningHourTest.OpeningHoursTestError> errors = OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Sa-Su 10.00-20.00");
         assertThat(errors, hasSize(2));
-        assertThat(errors.get(0).getMessage(), is(key + " - Sa-Su 10. <--- (Please use \":\" as hour/minute-separator)"));
-        assertThat(errors.get(0).getSeverity(), is(Severity.WARNING));
-        assertThat(errors.get(0).getPrettifiedValue(), is("Sa-Su 10:00-20:00"));
-        assertThat(errors.get(1).getMessage(), is(key + " - Sa-Su 10.00-20. <--- (Please use \":\" as hour/minute-separator)"));
-        assertThat(errors.get(1).getSeverity(), is(Severity.WARNING));
+        assertEquals(key + " - Sa-Su 10. <--- (Please use \":\" as hour/minute-separator)", errors.get(0).getMessage());
+        assertEquals(Severity.WARNING, errors.get(0).getSeverity());
+        assertEquals("Sa-Su 10:00-20:00", errors.get(0).getPrettifiedValue());
+        assertEquals(key + " - Sa-Su 10.00-20. <--- (Please use \":\" as hour/minute-separator)", errors.get(1).getMessage());
+        assertEquals(Severity.WARNING, errors.get(1).getSeverity());
     }
 
     /**
@@ -117,12 +117,12 @@ public class OpeningHourTestTest {
     public void testCheckOpeningHourSyntax5() {
         final String key = "opening_hours";
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "badtext"), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "badtext").get(0).getMessage(),
-                is(key + " - ba <--- (Unexpected token: \"b\" Invalid/unsupported syntax.)"));
+        assertEquals(key + " - ba <--- (Unexpected token: \"b\" Invalid/unsupported syntax.)",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "badtext").get(0).getMessage());
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m"), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m").get(0).getMessage(),
-                is(key + " - 5.00 p <--- (hyphen (-) or open end (+) in time range expected. "
-                       + "For working with points in time, the mode for opening_hours.js has to be altered. Maybe wrong tag?)"));
+        assertEquals(key + " - 5.00 p <--- (hyphen (-) or open end (+) in time range expected. "
+                + "For working with points in time, the mode for opening_hours.js has to be altered. Maybe wrong tag?)",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "5.00 p.m-11.00 p.m").get(0).getMessage());
     }
 
     /**
@@ -141,8 +141,8 @@ public class OpeningHourTestTest {
     public void testCheckOpeningHourSyntax7() {
         final String key = "opening_hours";
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00"), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getSeverity(), is(Severity.OTHER));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getPrettifiedValue(), is("09:00-18:00"));
+        assertEquals(Severity.OTHER, OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getSeverity());
+        assertEquals("09:00-18:00", OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "9:00-18:00").get(0).getPrettifiedValue());
     }
 
     /**
@@ -151,11 +151,11 @@ public class OpeningHourTestTest {
     @Test
     public void testCheckOpeningHourSyntaxTicket9367() {
         final String key = "opening_hours";
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getSeverity(), is(Severity.WARNING));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getMessage(),
-                is(key + " - Mo,Tu 04-17 <--- (Time range without minutes specified. "
-                       + "Not very explicit! Please use this syntax instead \"04:00-17:00\".)"));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getPrettifiedValue(), is("Mo,Tu 04:00-17:00"));
+        assertEquals(Severity.WARNING, OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getSeverity());
+        assertEquals(key + " - Mo,Tu 04-17 <--- (Time range without minutes specified. "
+                + "Not very explicit! Please use this syntax instead \"04:00-17:00\".)",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getMessage());
+        assertEquals("Mo,Tu 04:00-17:00", OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo,Tu 04-17").get(0).getPrettifiedValue());
     }
 
     /**
@@ -173,10 +173,12 @@ public class OpeningHourTestTest {
                 OpeningHourTest.CheckMode.BOTH), isEmpty());
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
                 OpeningHourTest.CheckMode.BOTH), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
-                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue(), is("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00"));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
-                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue(), is("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00"));
+        assertEquals("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
+                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
+        assertEquals("Mo-Fr 00:00-00:30,04:00-00:30; Sa,Su,PH 00:00-24:00",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 0:00-0:30,4:00-00:30; Sa,Su,PH 0:00-24:00",
+                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
     }
 
     /**
@@ -193,10 +195,12 @@ public class OpeningHourTestTest {
                 OpeningHourTest.CheckMode.BOTH), isEmpty());
         assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
                 OpeningHourTest.CheckMode.BOTH), hasSize(1));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
-                OpeningHourTest.CheckMode.BOTH).get(0).getSeverity(), is(Severity.OTHER));
-        assertThat(OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
-                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue(), is("Mo-Fr 13:30,17:45,19:00; Sa 15:00; Su 11:00"));
+        assertEquals(Severity.OTHER,
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
+                OpeningHourTest.CheckMode.BOTH).get(0).getSeverity());
+        assertEquals("Mo-Fr 13:30,17:45,19:00; Sa 15:00; Su 11:00",
+                OPENING_HOUR_TEST.checkOpeningHourSyntax(key, "Mo-Fr 13:30, 17:45, 19:00; Sa 15:00; Su 11:00",
+                OpeningHourTest.CheckMode.BOTH).get(0).getPrettifiedValue());
     }
 
     /**
@@ -208,10 +212,10 @@ public class OpeningHourTestTest {
         final Set<Tag> values = new LinkedHashSet<>();
         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));
                     }
                 }
             }
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy b/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy
index a00adff..fd8915c 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/RelationCheckerTest.groovy
@@ -8,7 +8,7 @@ import org.openstreetmap.josm.data.osm.Relation
 import org.openstreetmap.josm.data.osm.RelationMember
 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 {
 
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
index 3e073e9..17acdd0 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
@@ -1,8 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.validation.tests;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
 import java.util.List;
@@ -13,9 +12,13 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 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;
 
+/**
+ * JUnit Test of {@link TagChecker}.
+ */
 public class TagCheckerTest {
+
     /**
      * Setup test.
      */
@@ -36,33 +39,32 @@ public class TagCheckerTest {
     @Test
     public void testInvalidKey() throws Exception {
         final List<TestError> errors = test(OsmUtils.createPrimitive("node Name=Main"));
-        assertThat(errors.size(), is(1));
-        assertThat(errors.get(0).getMessage(), is("Misspelled property key"));
-        assertThat(errors.get(0).getDescription(), is("Key 'Name' looks like 'name'."));
+        assertEquals(1, errors.size());
+        assertEquals("Misspelled property key", errors.get(0).getMessage());
+        assertEquals("Key 'Name' looks like 'name'.", errors.get(0).getDescription());
     }
 
     @Test
     public void testMisspelledKey() throws Exception {
         final List<TestError> errors = test(OsmUtils.createPrimitive("node landuse;=forest"));
-        assertThat(errors.size(), is(1));
-        assertThat(errors.get(0).getMessage(), is("Misspelled property key"));
-        assertThat(errors.get(0).getDescription(), is("Key 'landuse;' looks like 'landuse'."));
+        assertEquals(1, errors.size());
+        assertEquals("Misspelled property key", errors.get(0).getMessage());
+        assertEquals("Key 'landuse;' looks like 'landuse'.", errors.get(0).getDescription());
     }
 
     @Test
     public void testTranslatedNameKey() throws Exception {
         final List<TestError> errors = test(OsmUtils.createPrimitive("node namez=Baz"));
-        assertThat(errors.size(), is(1));
-        assertThat(errors.get(0).getMessage(), is("Presets do not contain property key"));
-        assertThat(errors.get(0).getDescription(), is("Key 'namez' not in presets."));
+        assertEquals(1, errors.size());
+        assertEquals("Presets do not contain property key", errors.get(0).getMessage());
+        assertEquals("Key 'namez' not in presets.", errors.get(0).getDescription());
     }
 
     @Test
     public void testMisspelledTag() throws Exception {
         final List<TestError> errors = test(OsmUtils.createPrimitive("node landuse=forrest"));
-        assertThat(errors.size(), is(1));
-        assertThat(errors.get(0).getMessage(), is("Presets do not contain property value"));
-        assertThat(errors.get(0).getDescription(), is("Value 'forrest' for key 'landuse' not in presets."));
+        assertEquals(1, errors.size());
+        assertEquals("Presets do not contain property value", errors.get(0).getMessage());
+        assertEquals("Value 'forrest' for key 'landuse' not in presets.", errors.get(0).getDescription());
     }
-
 }
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/UnconnectedWaysTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/UnconnectedWaysTest.java
index 6ef62c8..67fbb5f 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/UnconnectedWaysTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/UnconnectedWaysTest.java
@@ -5,6 +5,8 @@ import static org.CustomMatchers.isEmpty;
 import static org.junit.Assert.assertThat;
 
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
 
 import org.junit.Before;
@@ -12,14 +14,19 @@ import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 
+/**
+ * Unit tests of {@code UnconnectedWays} class.
+ */
 public class UnconnectedWaysTest {
 
-    UnconnectedWays bib;
+    private UnconnectedWays bib;
 
     /**
      * Setup test.
+     * @throws Exception if the test cannot be initialized
      */
     @Before
     public void setUp() throws Exception {
@@ -29,8 +36,14 @@ public class UnconnectedWaysTest {
         bib.startTest(null);
     }
 
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/6313">Bug #6313</a>.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if the OSM data cannot be parsed
+     * @throws FileNotFoundException if the data file cannot be found
+     */
     @Test
-    public void testTicket6313() throws Exception {
+    public void testTicket6313() throws IOException, IllegalDataException, FileNotFoundException {
         try (InputStream fis = new FileInputStream("data_nodist/UnconnectedWaysTest.osm")) {
             final DataSet ds = OsmReader.parseDataSet(fis, NullProgressMonitor.INSTANCE);
             bib.visit(ds.allPrimitives());
diff --git a/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java b/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java
new file mode 100644
index 0000000..a0ac37e
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/data/validation/util/MultipleNameVisitorTest.java
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.validation.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Way;
+
+/**
+ * Unit tests for class {@link MultipleNameVisitor}.
+ */
+public class MultipleNameVisitorTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Non-regression test for bug #11967.
+     */
+    @Test
+    public void testTicket11967() {
+        MultipleNameVisitor visitor = new MultipleNameVisitor();
+        visitor.visit(Arrays.asList(new Way(), new Way()));
+        assertEquals("2 ways", visitor.toString());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java b/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
index 7b514d4..e980f22 100644
--- a/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/DefaultNameFormatterTest.java
@@ -1,9 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui;
 
-import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertThat;
 
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -20,8 +19,8 @@ import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 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;
 import org.openstreetmap.josm.io.OsmReader;
@@ -29,7 +28,6 @@ import org.xml.sax.SAXException;
 
 /**
  * Unit tests of {@link DefaultNameFormatter} class.
- *
  */
 public class DefaultNameFormatterTest {
 
@@ -88,15 +86,20 @@ public class DefaultNameFormatterTest {
      */
     @Test
     public void testRelationName() {
-        assertThat(getFormattedRelationName("X=Y"), is("relation (0, 0 members)"));
-        assertThat(getFormattedRelationName("name=Foo"), is("relation (\"Foo\", 0 members)"));
-        assertThat(getFormattedRelationName("type=route route=tram ref=123"), is("route (\"123\", 0 members)"));
-        assertThat(getFormattedRelationName("type=multipolygon building=yes"), is("multipolygon (\"building\", 0 members)"));
-        assertThat(getFormattedRelationName("type=multipolygon building=yes ref=123"), is("multipolygon (\"123\", 0 members)"));
-        assertThat(getFormattedRelationName("type=multipolygon building=yes addr:housenumber=123"),
-                is("multipolygon (\"building\", 0 members)"));
-        assertThat(getFormattedRelationName("type=multipolygon building=residential addr:housenumber=123"),
-                is("multipolygon (\"residential\", 0 members)"));
+        assertEquals("relation (0, 0 members)",
+                getFormattedRelationName("X=Y"));
+        assertEquals("relation (\"Foo\", 0 members)",
+                getFormattedRelationName("name=Foo"));
+        assertEquals("route (\"123\", 0 members)",
+                getFormattedRelationName("type=route route=tram ref=123"));
+        assertEquals("multipolygon (\"building\", 0 members)",
+                getFormattedRelationName("type=multipolygon building=yes"));
+        assertEquals("multipolygon (\"123\", 0 members)",
+                getFormattedRelationName("type=multipolygon building=yes ref=123"));
+        assertEquals("multipolygon (\"building\", 0 members)",
+                getFormattedRelationName("type=multipolygon building=yes addr:housenumber=123"));
+        assertEquals("multipolygon (\"residential\", 0 members)",
+                getFormattedRelationName("type=multipolygon building=residential addr:housenumber=123"));
     }
 
     /**
@@ -104,11 +107,10 @@ public class DefaultNameFormatterTest {
      */
     @Test
     public void testWayName() {
-        assertThat(getFormattedWayName("building=yes"), is("building (0 nodes)"));
-        assertThat(getFormattedWayName("building=yes addr:housenumber=123"), is("House number 123 (0 nodes)"));
-        assertThat(getFormattedWayName("building=yes addr:housenumber=123 addr:street=FooStreet"),
-                is("House number 123 at FooStreet (0 nodes)"));
-        assertThat(getFormattedWayName("building=yes addr:housenumber=123 addr:housename=FooName"), is("House FooName (0 nodes)"));
+        assertEquals("building (0 nodes)", getFormattedWayName("building=yes"));
+        assertEquals("House number 123 (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123"));
+        assertEquals("House number 123 at FooStreet (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123 addr:street=FooStreet"));
+        assertEquals("House FooName (0 nodes)", getFormattedWayName("building=yes addr:housenumber=123 addr:housename=FooName"));
     }
 
     static String getFormattedRelationName(String tagsString) {
diff --git a/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java b/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java
index c4f66ae..2680d57 100644
--- a/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java
@@ -1,7 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui;
 
-import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
@@ -35,7 +34,7 @@ public class NavigatableComponentTest {
      * Setup test.
      */
     @BeforeClass
-    public static void setUp() {
+    public static void setUpBeforeClass() {
         JOSMFixture.createUnitTestFixture().init();
     }
 
@@ -43,7 +42,7 @@ public class NavigatableComponentTest {
      * Create a new, fresh {@link NavigatableComponent}
      */
     @Before
-    public void setup() {
+    public void setUp() {
         component = new NavigatableComponent();
         component.setBounds(new Rectangle(WIDTH, HEIGHT));
         // wait for the event to be propagated.
@@ -106,19 +105,19 @@ public class NavigatableComponentTest {
         // zoomToFactor(double)
         component.zoomToFactor(0.5);
         assertEquals(initialScale / 2, component.getScale(), 0.00000001);
-        assertThat(component.getCenter(), is(center));
+        assertEquals(center, component.getCenter());
         component.zoomToFactor(2);
         assertEquals(initialScale, component.getScale(), 0.00000001);
-        assertThat(component.getCenter(), is(center));
+        assertEquals(center, component.getCenter());
 
         // zoomToFactor(EastNorth, double)
         EastNorth newCenter = new EastNorth(10, 20);
         component.zoomToFactor(newCenter, 0.5);
         assertEquals(initialScale / 2, component.getScale(), 0.00000001);
-        assertThat(component.getCenter(), is(newCenter));
+        assertEquals(newCenter, component.getCenter());
         component.zoomToFactor(newCenter, 2);
         assertEquals(initialScale, component.getScale(), 0.00000001);
-        assertThat(component.getCenter(), is(newCenter));
+        assertEquals(newCenter, component.getCenter());
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java
index 8d9b3f8..0124522 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java
@@ -31,6 +31,9 @@ public class NodeListMergeModelTest {
     private DatasetFactory my = new DatasetFactory();
     private DatasetFactory their = new DatasetFactory();
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java
index c3a17a4..53698af 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java
@@ -41,6 +41,9 @@ public class PropertiesMergeModelTest {
 
     PropertiesMergeModel model;
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModelTest.java
new file mode 100644
index 0000000..c03bf4f
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModelTest.java
@@ -0,0 +1,122 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.conflict.tags;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.Way;
+
+public class RelationMemberConflictResolverModelTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void init() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    List<Way> buildTestDataSet() {
+        final DataSet ds = new DataSet();
+        final Node n1 = new Node(new LatLon(1, 1));
+        final Node n2 = new Node(new LatLon(2, 2));
+        final Node n3 = new Node(new LatLon(3, 3));
+        final Way w1 = new Way();
+        final Way w2 = new Way();
+        final Way w3 = new Way();
+        ds.addPrimitive(n1);
+        ds.addPrimitive(n2);
+        ds.addPrimitive(n3);
+        ds.addPrimitive(w1);
+        ds.addPrimitive(w2);
+        ds.addPrimitive(w3);
+        w1.addNode(n1);
+        w1.addNode(n2);
+        w2.addNode(n2);
+        w2.addNode(n3);
+        w3.addNode(n3);
+        w3.addNode(n1);
+        return Arrays.asList(w1, w2, w3);
+    }
+
+    @Test
+    public void testSameRoles() throws Exception {
+        final List<Way> ways = buildTestDataSet();
+        final Relation r = new Relation();
+        r.addMember(new RelationMember("foo", ways.get(0)));
+        r.addMember(new RelationMember("foo", ways.get(1)));
+
+        final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
+        model.populate(Collections.singleton(r), ways.subList(0, 2));
+        model.prepareDefaultRelationDecisions();
+        assertTrue(model.isResolvedCompletely());
+        assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
+        assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
+        assertEquals("foo", model.getDecision(0).getRole());
+        assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(1).getDecision());
+        assertEquals(ways.get(1), model.getDecision(1).getOriginalPrimitive());
+    }
+
+    @Test
+    public void testDifferentRoles() throws Exception {
+        final List<Way> ways = buildTestDataSet();
+        final Relation r = new Relation();
+        r.addMember(new RelationMember("foo", ways.get(0)));
+        r.addMember(new RelationMember("bar", ways.get(1)));
+
+        final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
+        model.populate(Collections.singleton(r), ways.subList(0, 2));
+        model.prepareDefaultRelationDecisions();
+        assertFalse(model.isResolvedCompletely());
+    }
+
+    @Test
+    public void testDifferentPresence() throws Exception {
+        final List<Way> ways = buildTestDataSet();
+        final Relation r = new Relation();
+        r.addMember(new RelationMember("foo", ways.get(0)));
+
+        final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
+        model.populate(Collections.singleton(r), ways.subList(0, 2));
+        model.prepareDefaultRelationDecisions();
+        assertFalse(model.isResolvedCompletely());
+    }
+
+    @Test
+    public void testEveryMemberIsPresentTwice() throws Exception {
+        final List<Way> ways = buildTestDataSet();
+        final Relation r = new Relation();
+        r.addMember(new RelationMember("foo", ways.get(0)));
+        r.addMember(new RelationMember("foo", ways.get(1)));
+        r.addMember(new RelationMember("xoo", ways.get(2)));
+        r.addMember(new RelationMember("bar", ways.get(0)));
+        r.addMember(new RelationMember("bar", ways.get(1)));
+        r.addMember(new RelationMember("xoo", ways.get(2)));
+
+        final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
+        model.populate(Collections.singleton(r), ways.subList(0, 2));
+        model.prepareDefaultRelationDecisions();
+        assertTrue(model.isResolvedCompletely());
+        assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
+        assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
+        assertEquals("foo", model.getDecision(0).getRole());
+        assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(1).getDecision());
+        assertEquals(ways.get(0), model.getDecision(1).getOriginalPrimitive());
+        assertEquals("bar", model.getDecision(1).getRole());
+        assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(2).getDecision());
+        assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(3).getDecision());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeItemTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeItemTest.java
index 1fa8aa4..3233f1f 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeItemTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeItemTest.java
@@ -13,8 +13,14 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeItem;
 
+/**
+ * Unit tests of {@link TagMergeItem} class.
+ */
 public class TagMergeItemTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeModelTest.java
index 476836d..8686066 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeModelTest.java
@@ -18,9 +18,15 @@ import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeItem;
 import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeModel;
 
+/**
+ * Unit tests of {@link TagMergeModel} class.
+ */
 @SuppressWarnings("unchecked")
 public class TagMergeModelTest {
 
+    /**
+     * Setup test.
+     */
     @BeforeClass
     public static void init() {
         JOSMFixture.createUnitTestFixture().init();
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java
index 3bb198f..9f55559 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/LatLonDialogTest.java
@@ -1,102 +1,38 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 import org.openstreetmap.josm.data.coor.LatLon;
 
+/**
+ * Unit tests of {@link LatLonDialog} class.
+ */
 public class LatLonDialogTest {
-    @Test
-    public void test1() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49.29918° 19.24788°"), is(new LatLon(49.29918, 19.24788)));
-    }
-
-    @Test
-    public void test2() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("N 49.29918 E 19.24788°"), is(new LatLon(49.29918, 19.24788)));
-    }
-
-    @Test
-    public void test3() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49.29918° 19.24788°"), is(new LatLon(49.29918, 19.24788)));
-    }
-
-    @Test
-    public void test4() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("N 49.29918 E 19.24788"), is(new LatLon(49.29918, 19.24788)));
-    }
-
-    @Test
-    public void test5() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("W 49°29.918' S 19°24.788'"), is(new LatLon(-19 - 24.788 / 60, -49 - 29.918 / 60)));
-    }
-
-    @Test
-    public void test6() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("N 49°29'04\" E 19°24'43\""),
-                is(new LatLon(49 + 29. / 60 + 04. / 3600, 19 + 24. / 60 + 43. / 3600)));
-    }
-
-    @Test
-    public void test7() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49.29918 N, 19.24788 E"), is(new LatLon(49.29918, 19.24788)));
-    }
-
-    @Test
-    public void test8() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49°29'21\" N 19°24'38\" E"),
-                is(new LatLon(49 + 29. / 60 + 21. / 3600, 19 + 24. / 60 + 38. / 3600)));
-    }
-
-    @Test
-    public void test9() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49 29 51, 19 24 18"), is(new LatLon(49 + 29. / 60 + 51. / 3600, 19 + 24. / 60 + 18. / 3600)));
-    }
 
-    @Test
-    public void test10() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49 29, 19 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
-    }
-
-    @Test
-    public void test11() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("E 49 29, N 19 24"), is(new LatLon(19 + 24. / 60, 49 + 29. / 60)));
-    }
-
-    @Test
-    public void test12() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49° 29; 19° 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
-    }
-
-    @Test
-    public void test13() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49° 29; 19° 24"), is(new LatLon(49 + 29. / 60, 19 + 24. / 60)));
-    }
-
-    @Test
-    public void test14() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("N 49° 29, W 19° 24"), is(new LatLon(49 + 29. / 60, -19 - 24. / 60)));
-    }
-
-    @Test
-    public void test15() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49° 29.5 S, 19° 24.6 E"), is(new LatLon(-49 - 29.5 / 60, 19 + 24.6 / 60)));
-    }
-
-    @Test
-    public void test16() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("N 49 29.918 E 19 15.88"), is(new LatLon(49 + 29.918 / 60, 19 + 15.88 / 60)));
-    }
-
-    @Test
-    public void test17() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("49 29.4 19 24.5"), is(new LatLon(49 + 29.4 / 60, 19 + 24.5 / 60)));
-    }
-
-    @Test
-    public void test18() throws Exception {
-        assertThat(LatLonDialog.parseLatLon("-49 29.4 N -19 24.5 W"), is(new LatLon(-49 - 29.4 / 60, 19 + 24.5 / 60)));
+    /**
+     * Unit test of {@link LatLonDialog#parseLatLon} method.
+     */
+    @Test
+    public void testparseLatLon() {
+        assertEquals(new LatLon(49.29918, 19.24788), LatLonDialog.parseLatLon("49.29918° 19.24788°"));
+        assertEquals(new LatLon(49.29918, 19.24788), LatLonDialog.parseLatLon("N 49.29918 E 19.24788°"));
+        assertEquals(new LatLon(49.29918, 19.24788), LatLonDialog.parseLatLon("49.29918° 19.24788°"));
+        assertEquals(new LatLon(49.29918, 19.24788), LatLonDialog.parseLatLon("N 49.29918 E 19.24788"));
+        assertEquals(new LatLon(-19 - 24.788 / 60, -49 - 29.918 / 60), LatLonDialog.parseLatLon("W 49°29.918' S 19°24.788'"));
+        assertEquals(new LatLon(49 + 29. / 60 + 04. / 3600, 19 + 24. / 60 + 43. / 3600), LatLonDialog.parseLatLon("N 49°29'04\" E 19°24'43\""));
+        assertEquals(new LatLon(49.29918, 19.24788), LatLonDialog.parseLatLon("49.29918 N, 19.24788 E"));
+        assertEquals(new LatLon(49 + 29. / 60 + 21. / 3600, 19 + 24. / 60 + 38. / 3600), LatLonDialog.parseLatLon("49°29'21\" N 19°24'38\" E"));
+        assertEquals(new LatLon(49 + 29. / 60 + 51. / 3600, 19 + 24. / 60 + 18. / 3600), LatLonDialog.parseLatLon("49 29 51, 19 24 18"));
+        assertEquals(new LatLon(49 + 29. / 60, 19 + 24. / 60), LatLonDialog.parseLatLon("49 29, 19 24"));
+        assertEquals(new LatLon(19 + 24. / 60, 49 + 29. / 60), LatLonDialog.parseLatLon("E 49 29, N 19 24"));
+        assertEquals(new LatLon(49 + 29. / 60, 19 + 24. / 60), LatLonDialog.parseLatLon("49° 29; 19° 24"));
+        assertEquals(new LatLon(49 + 29. / 60, 19 + 24. / 60), LatLonDialog.parseLatLon("49° 29; 19° 24"));
+        assertEquals(new LatLon(49 + 29. / 60, -19 - 24. / 60), LatLonDialog.parseLatLon("N 49° 29, W 19° 24"));
+        assertEquals(new LatLon(-49 - 29.5 / 60, 19 + 24.6 / 60), LatLonDialog.parseLatLon("49° 29.5 S, 19° 24.6 E"));
+        assertEquals(new LatLon(49 + 29.918 / 60, 19 + 15.88 / 60), LatLonDialog.parseLatLon("N 49 29.918 E 19 15.88"));
+        assertEquals(new LatLon(49 + 29.4 / 60, 19 + 24.5 / 60), LatLonDialog.parseLatLon("49 29.4 19 24.5"));
+        assertEquals(new LatLon(-49 - 29.4 / 60, 19 + 24.5 / 60), LatLonDialog.parseLatLon("-49 29.4 N -19 24.5 W"));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorterTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorterTest.java
index 0e22248..d58ebf7 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorterTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorterTest.java
@@ -18,9 +18,12 @@ import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 
+/**
+ * Unit tests of {@link RelationSorter} class.
+ */
 public class RelationSorterTest {
 
-    private RelationSorter sorter = new RelationSorter();
+    private final RelationSorter sorter = new RelationSorter();
     private static DataSet testDataset;
 
     @BeforeClass
@@ -68,5 +71,4 @@ public class RelationSorterTest {
         String[] actual = getNames(sorter.sortMembers(getRelation("street").getMembers()));
         Assert.assertArrayEquals(new String[]{"t2w1", "t2w2", "t2n1", "t2n2", "t2n3", "t2n4", "playground", "tree"}, actual);
     }
-
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java
index f6199f8..c9ee5b1 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java
@@ -18,6 +18,9 @@ import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 
+/**
+ * Unit tests of {@link WayConnectionTypeCalculator} class.
+ */
 public class WayConnectionTypeCalculatorTest {
 
     private RelationSorter sorter = new RelationSorter();
@@ -91,7 +94,7 @@ public class WayConnectionTypeCalculatorTest {
     public void testAssociatedStreet() {
         Relation relation = getRelation("associatedStreet");
         String actual = getConnections(wayConnectionTypeCalculator.updateLinks(relation.getMembers()));
-        Assert.assertEquals("[NONE, I, I, I, NONE, I]" , actual);
+        Assert.assertEquals("[NONE, I, I, I, NONE, I]", actual);
         actual = getConnections(wayConnectionTypeCalculator.updateLinks(sorter.sortMembers(relation.getMembers())));
         Assert.assertEquals("[FORWARD, FORWARD, I, I, I, I]", actual);
     }
@@ -105,6 +108,4 @@ public class WayConnectionTypeCalculatorTest {
         actual = getConnections(wayConnectionTypeCalculator.updateLinks(sorter.sortMembers(relation.getMembers())));
         Assert.assertEquals("[BACKWARD, BACKWARD, BACKWARD, FPH FORWARD, FPH FORWARD, FPH FORWARD, FPH FORWARD]", actual);
     }
-
-
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy
index 52eb187..ba8e034 100644
--- a/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy
+++ b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ChildOrParentSelectorTest.groovy
@@ -1,9 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.mappaint.mapcss
 
-import org.openstreetmap.josm.gui.mappaint.MultiCascade;
-
-import static org.junit.Assert.*
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType
+import org.openstreetmap.josm.gui.mappaint.MultiCascade
+import org.openstreetmap.josm.io.OsmReader
 
 import java.util.logging.Logger
 
@@ -181,4 +181,12 @@ class ChildOrParentSelectorTest {
         e = new Environment(w3)
         assert selector.matches(e)
     }
+
+    @Test
+    public void testContains() throws Exception {
+        def ds = OsmReader.parseDataSet(new FileInputStream("data_nodist/amenity-in-amenity.osm"), null)
+        def css = parse("node[tag(\"amenity\") = parent_tag(\"amenity\")] ∈ *[amenity] {}")
+        assert css.matches(new Environment(ds.getPrimitiveById(123, OsmPrimitiveType.WAY)))
+        assert css.matches(new Environment(ds.getPrimitiveById(123, OsmPrimitiveType.RELATION)))
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy
index d025e94..675a623 100644
--- a/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy
+++ b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/KeyValueConditionTest.groovy
@@ -1,18 +1,18 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.mappaint.mapcss;
 
-import static org.junit.Assert.*
-
 import org.junit.*
 import org.openstreetmap.josm.JOSMFixture
 import org.openstreetmap.josm.data.coor.LatLon
 import org.openstreetmap.josm.data.osm.DataSet
 import org.openstreetmap.josm.data.osm.Node
+import org.openstreetmap.josm.data.osm.OsmUtils
 import org.openstreetmap.josm.data.osm.Relation
 import org.openstreetmap.josm.data.osm.RelationMember
 import org.openstreetmap.josm.gui.mappaint.Environment
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Context
 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op
+import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
 
 
 class KeyValueConditionTest {
@@ -85,4 +85,19 @@ class KeyValueConditionTest {
         cond = Condition.createKeyValueCondition("role", "another_role", Op.NEQ, Context.LINK, false)
         assert cond.applies(e)
     }
+
+    @Test
+    public void testKeyRegexValueRegex() throws Exception {
+        def selPos = new MapCSSParser(new StringReader("*[/^source/ =~ /.*,.*/]")).selector()
+        def selNeg = new MapCSSParser(new StringReader("*[/^source/ !~ /.*,.*/]")).selector()
+        assert !selPos.matches(new Environment(OsmUtils.createPrimitive("way foo=bar")))
+        assert selPos.matches(new Environment(OsmUtils.createPrimitive("way source=1,2")))
+        assert selPos.matches(new Environment(OsmUtils.createPrimitive("way source_foo_bar=1,2")))
+        assert !selPos.matches(new Environment(OsmUtils.createPrimitive("way source=1")))
+        assert !selPos.matches(new Environment(OsmUtils.createPrimitive("way source=1")))
+        assert !selNeg.matches(new Environment(OsmUtils.createPrimitive("way source=1,2")))
+        assert !selNeg.matches(new Environment(OsmUtils.createPrimitive("way foo=bar source=1,2")))
+        assert selNeg.matches(new Environment(OsmUtils.createPrimitive("way foo=bar source=baz")))
+        assert selNeg.matches(new Environment(OsmUtils.createPrimitive("way foo=bar src=1,2")))
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
index 301109f..ac68a6a 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
@@ -18,11 +18,14 @@ import org.openstreetmap.josm.actions.ParameterizedAction;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionDefinition;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionParser;
 
+/**
+ * Unit tests of {@link ToolbarPreferences} class.
+ */
 public class ToolbarPreferencesTest {
 
     private static class TestAction extends AbstractAction implements ParameterizedAction {
 
-        public TestAction() {
+        TestAction() {
             putValue("toolbar", "action");
         }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java
new file mode 100644
index 0000000..04f447a
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTest.java
@@ -0,0 +1,53 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.preferences.map;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
+import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+
+/**
+ * Unit tests of {@link MapPaintPreference} class.
+ */
+public class MapPaintPreferenceTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Test that available map paint styles are valid.
+     * @throws IOException if any I/O error occurs
+     * @throws ParseException if the config file does not match MapCSS syntax
+     */
+    @Test
+    public void testValidityOfAvailableStyles() throws ParseException, IOException {
+        Collection<ExtendedSourceEntry> sources = new MapPaintPreference.MapPaintSourceEditor()
+                .loadAndGetAvailableSources();
+        assertFalse(sources.isEmpty());
+        Map<String, Collection<Throwable>> allErrors = new HashMap<>();
+        for (ExtendedSourceEntry source : sources) {
+            System.out.println(source.url);
+            Collection<Throwable> errors = MapPaintStyles.addStyle(source);
+            System.out.println(errors.isEmpty() ? " => OK" : " => KO");
+            if (!errors.isEmpty()) {
+                allErrors.put(source.url, errors);
+            }
+        }
+        assertTrue(allErrors.toString(), allErrors.isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java
new file mode 100644
index 0000000..c9d0b13
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTest.java
@@ -0,0 +1,88 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.preferences.map;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+import org.xml.sax.SAXException;
+
+/**
+ * Unit tests of {@link TaggingPresetPreference} class.
+ */
+public class TaggingPresetPreferenceTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Test that available tagging presets are valid.
+     */
+    @Test
+    public void testValidityOfAvailablePresets() {
+        Collection<ExtendedSourceEntry> sources = new TaggingPresetPreference.TaggingPresetSourceEditor()
+                .loadAndGetAvailableSources();
+        assertFalse(sources.isEmpty());
+        // Double traditional timeouts to avoid random problems
+        Main.pref.putInteger("socket.timeout.connect", 30);
+        Main.pref.putInteger("socket.timeout.read", 60);
+        Collection<Throwable> allErrors = new ArrayList<>();
+        Set<String> allMessages = new HashSet<>();
+        for (ExtendedSourceEntry source : sources) {
+            System.out.println(source.url);
+            try {
+                testPresets(allMessages, source);
+            } catch (IOException e) {
+                try {
+                    Main.warn(e);
+                    // try again in case of temporary network error
+                    testPresets(allMessages, source);
+                } catch (SAXException | IOException e1) {
+                    e.printStackTrace();
+                    allErrors.add(e1);
+                    System.out.println(" => KO");
+                }
+            } catch (SAXException e) {
+                e.printStackTrace();
+                allErrors.add(e);
+                System.out.println(" => KO");
+            }
+        }
+        assertTrue(allErrors.isEmpty());
+        assertTrue(allMessages.isEmpty());
+    }
+
+    private static void testPresets(Set<String> allMessages, ExtendedSourceEntry source) throws SAXException, IOException {
+        Collection<TaggingPreset> presets = TaggingPresetReader.readAll(source.url, true);
+        assertFalse(presets.isEmpty());
+        Collection<String> errorsAndWarnings = Main.getLastErrorAndWarnings();
+        boolean error = false;
+        for (String message : errorsAndWarnings) {
+            if (message.contains(TaggingPreset.PRESET_ICON_ERROR_MSG_PREFIX)) {
+                error = true;
+                allMessages.add(message);
+            }
+        }
+        System.out.println(error ? " => KO" : " => OK");
+        if (error) {
+            Main.clearLastErrorAndWarnings();
+        }
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTest.java
new file mode 100644
index 0000000..5400fea
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTest.java
@@ -0,0 +1,53 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.preferences.validator;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
+import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.ParseResult;
+import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
+import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
+
+/**
+ * Unit tests of {@link ValidatorTagCheckerRulesPreference} class.
+ */
+public class ValidatorTagCheckerRulesPreferenceTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Test that available tag checker rules are valid.
+     * @throws IOException if any I/O error occurs
+     * @throws ParseException if the config file does not match MapCSS syntax
+     */
+    @Test
+    public void testValidityOfAvailableRules() throws ParseException, IOException {
+        Collection<ExtendedSourceEntry> sources = new ValidatorTagCheckerRulesPreference.TagCheckerRulesSourceEditor()
+                .loadAndGetAvailableSources();
+        assertFalse(sources.isEmpty());
+        Collection<Throwable> allErrors = new ArrayList<>();
+        MapCSSTagChecker tagChecker = new MapCSSTagChecker();
+        for (ExtendedSourceEntry source : sources) {
+            System.out.print(source.url);
+            ParseResult result = tagChecker.addMapCSS(source.url);
+            assertFalse(result.parseChecks.isEmpty());
+            System.out.println(result.parseErrors.isEmpty() ? " => OK" : " => KO");
+            allErrors.addAll(result.parseErrors);
+        }
+        assertTrue(allErrors.isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/tagging/PresetClassificationsTest.java b/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
similarity index 74%
rename from test/unit/org/openstreetmap/josm/gui/tagging/PresetClassificationsTest.java
rename to test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
index 1e9e0af..ea64144 100644
--- a/test/unit/org/openstreetmap/josm/gui/tagging/PresetClassificationsTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
@@ -1,5 +1,5 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -17,15 +17,22 @@ 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 TaggingPresetSelector.PresetClassifications classifications = new TaggingPresetSelector.PresetClassifications();
+    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 {
@@ -34,22 +41,25 @@ public class PresetClassificationsTest {
         classifications.loadPresets(presets);
     }
 
-    private List<TaggingPresetSelector.PresetClassification> getMatchingPresets(String searchText, OsmPrimitive w) {
+    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<TaggingPresetSelector.PresetClassification, String>() {
+        return Utils.transform(getMatchingPresets(searchText, w), new Utils.Function<PresetClassification, String>() {
             @Override
-            public String apply(TaggingPresetSelector.PresetClassification x) {
+            public String apply(PresetClassification x) {
                 return x.preset.name;
             }
         });
     }
 
+    /**
+     * Test building preset.
+     */
     @Test
-    public void testBuilding() throws Exception {
+    public void testBuilding() {
         final Way w = new Way();
         final Node n1 = new Node();
         w.addNode(n1);
@@ -60,6 +70,9 @@ public class PresetClassificationsTest {
         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");
diff --git a/test/unit/org/openstreetmap/josm/gui/tagging/TaggingPresetReaderTest.java b/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
similarity index 74%
rename from test/unit/org/openstreetmap/josm/gui/tagging/TaggingPresetReaderTest.java
rename to test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
index 2c22766..2afe294 100644
--- a/test/unit/org/openstreetmap/josm/gui/tagging/TaggingPresetReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
@@ -1,8 +1,8 @@
 // License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.tagging;
+package org.openstreetmap.josm.gui.tagging.presets;
 
 import static org.CustomMatchers.hasSize;
-import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 import java.io.IOException;
@@ -14,6 +14,8 @@ 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;
 
@@ -32,6 +34,8 @@ public class TaggingPresetReaderTest {
 
     /**
      * #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 {
@@ -41,26 +45,33 @@ public class TaggingPresetReaderTest {
         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);
+        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 Exception {
+    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 ((TaggingPresetItems.Key) x).key;
+                return ((Key) x).key;
             }
         });
-        assertThat(keys.toString(), is("[A1, A2, A3, B1, B2, B3, C1, C2, C3]"));
+        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 {
diff --git a/test/unit/org/openstreetmap/josm/gui/util/RotationAngleTest.java b/test/unit/org/openstreetmap/josm/gui/util/RotationAngleTest.java
index 30a7771..7269107 100644
--- a/test/unit/org/openstreetmap/josm/gui/util/RotationAngleTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/util/RotationAngleTest.java
@@ -1,27 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.util;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 
+/**
+ * Unit tests of {@link RotationAngle} class.
+ */
 public class RotationAngleTest {
 
+    private static final double EPSILON = 1e-11;
+
     @Test
-    public void testParseCardinal() throws Exception {
-        assertThat(RotationAngle.buildStaticRotation("south").getRotationAngle(null), is(Math.PI));
-        assertThat(RotationAngle.buildStaticRotation("s").getRotationAngle(null), is(Math.PI));
-        assertThat(RotationAngle.buildStaticRotation("northwest").getRotationAngle(null), is(Math.toRadians(315)));
+    public void testParseCardinal() {
+        assertEquals(Math.PI, RotationAngle.buildStaticRotation("south").getRotationAngle(null), EPSILON);
+        assertEquals(Math.PI, RotationAngle.buildStaticRotation("s").getRotationAngle(null), EPSILON);
+        assertEquals(Math.toRadians(315), RotationAngle.buildStaticRotation("northwest").getRotationAngle(null), EPSILON);
     }
 
     @Test(expected = IllegalArgumentException.class)
-    public void testParseFail() throws Exception {
+    public void testParseFail() {
         RotationAngle.buildStaticRotation("bad");
     }
 
     @Test(expected = NullPointerException.class)
-    public void testParseNull() throws Exception {
+    public void testParseNull() {
         RotationAngle.buildStaticRotation(null);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/NoteReaderTest.java b/test/unit/org/openstreetmap/josm/io/NoteReaderTest.java
new file mode 100644
index 0000000..95f032d
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/io/NoteReaderTest.java
@@ -0,0 +1,85 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.junit.Test;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.notes.Note;
+import org.openstreetmap.josm.data.notes.Note.State;
+import org.openstreetmap.josm.data.notes.NoteComment;
+import org.openstreetmap.josm.data.notes.NoteComment.Action;
+import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.tools.date.DateUtils;
+import org.xml.sax.SAXException;
+
+/**
+ * Unit tests of {@link NoteReader} class.
+ */
+public class NoteReaderTest {
+
+    /**
+     * Test to read the first note of OSM database.
+     * @throws SAXException if any SAX parsing error occurs
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void testNoteReader() throws SAXException, IOException {
+        List<Note> list = new NoteReader(
+            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
+            "<osm version=\"0.6\" generator=\"OpenStreetMap server\">\n"+
+            "<note lon=\"68.86415\" lat=\"36.7232991\">\n"+
+            "  <id>4</id>\n"+
+            "  <url>http://api.openstreetmap.org/api/0.6/notes/4</url>\n"+
+            "  <reopen_url>http://api.openstreetmap.org/api/0.6/notes/4/reopen</reopen_url>\n"+
+            "  <date_created>2013-04-24 08:07:02 UTC</date_created>\n"+
+            "  <status>closed</status>\n"+
+            "  <date_closed>2013-04-24 08:08:51 UTC</date_closed>\n"+
+            "  <comments>\n"+
+            "    <comment>\n"+
+            "      <date>2013-04-24 08:07:02 UTC</date>\n"+
+            "      <uid>1626</uid>\n"+
+            "      <user>FredB</user>\n"+
+            "      <user_url>http://www.openstreetmap.org/user/FredB</user_url>\n"+
+            "      <action>opened</action>\n"+
+            "      <text>test</text>\n"+
+            "      <html><p>test</p></html>\n"+
+            "    </comment>\n"+
+            "    <comment>\n"+
+            "      <date>2013-04-24 08:08:51 UTC</date>\n"+
+            "      <uid>1626</uid>\n"+
+            "      <user>FredB</user>\n"+
+            "      <user_url>http://www.openstreetmap.org/user/FredB</user_url>\n"+
+            "      <action>closed</action>\n"+
+            "      <text></text>\n"+
+            "      <html><p></p></html>\n"+
+            "    </comment>\n"+
+            "  </comments>\n"+
+            "</note>\n"+
+            "</osm>").parse();
+
+        assertEquals(1, list.size());
+        Note n = list.get(0);
+        assertEquals(DateUtils.fromString("2013-04-24 08:08:51 UTC"), n.getClosedAt());
+        assertEquals(DateUtils.fromString("2013-04-24 08:07:02 UTC"), n.getCreatedAt());
+        assertEquals(4, n.getId());
+        assertEquals(new LatLon(36.7232991, 68.86415), n.getLatLon());
+        assertEquals(State.closed, n.getState());
+        List<NoteComment> comments = n.getComments();
+        assertEquals(2, comments.size());
+
+        NoteComment c1 = comments.get(0);
+        assertEquals(c1, n.getFirstComment());
+        assertEquals(DateUtils.fromString("2013-04-24 08:07:02 UTC"), c1.getCommentTimestamp());
+        assertEquals(Action.opened, c1.getNoteAction());
+        assertEquals("test", c1.getText());
+        assertEquals(User.createOsmUser(1626, "FredB"), c1.getUser());
+
+        NoteComment c2 = comments.get(1);
+        assertEquals(Action.closed, c2.getNoteAction());
+        assertEquals("", c2.getText());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
index 6553301..f33f1a7 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
@@ -9,7 +9,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -111,42 +110,42 @@ public class RemoteControlTest {
 
     /**
      * Tests that sending an HTTP request without command results in HTTP 400, with all available commands in error message.
-     * @throws IOException if an I/O error occurs
-     * @throws MalformedURLException if HTTP URL is invalid
      */
     @Test
-    public void testHttpListOfCommands() throws MalformedURLException, IOException {
+    public void testHttpListOfCommands() {
         testListOfCommands(httpBase);
     }
 
     /**
      * Tests that sending an HTTPS request without command results in HTTP 400, with all available commands in error message.
-     * @throws IOException if an I/O error occurs
-     * @throws MalformedURLException if HTTPS URL is invalid
      */
     @Test
-    public void testHttpsListOfCommands() throws MalformedURLException, IOException {
+    public void testHttpsListOfCommands() {
         testListOfCommands(httpsBase);
     }
 
-    private void testListOfCommands(String url) throws MalformedURLException, IOException {
-        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
-        connection.connect();
-        assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_BAD_REQUEST);
-        try (InputStream is = connection.getErrorStream()) {
-            // TODO this code should be refactored somewhere in Utils as it is used in several JOSM classes
-            StringBuilder responseBody = new StringBuilder();
-            try (BufferedReader in = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
-                String s;
-                while ((s = in.readLine()) != null) {
-                    responseBody.append(s);
-                    responseBody.append("\n");
+    private void testListOfCommands(String url) {
+        try {
+            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
+            connection.connect();
+            assertEquals(connection.getResponseCode(), HttpURLConnection.HTTP_BAD_REQUEST);
+            try (InputStream is = connection.getErrorStream()) {
+                // TODO this code should be refactored somewhere in Utils as it is used in several JOSM classes
+                StringBuilder responseBody = new StringBuilder();
+                try (BufferedReader in = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+                    String s;
+                    while ((s = in.readLine()) != null) {
+                        responseBody.append(s);
+                        responseBody.append("\n");
+                    }
                 }
+                assert responseBody.toString().contains(RequestProcessor.getUsageAsHtml());
+            } catch (IllegalAccessException | InstantiationException e) {
+                e.printStackTrace();
+                fail(e.getMessage());
             }
-            assert responseBody.toString().contains(RequestProcessor.getUsageAsHtml());
-        } catch (IllegalAccessException e) {
-            fail(e.getMessage());
-        } catch (InstantiationException e) {
+        } catch (IOException e) {
+            e.printStackTrace();
             fail(e.getMessage());
         }
     }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
index b51fa62..c90bc59 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/ImportHandlerTest.java
@@ -1,18 +1,22 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
-import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 
+/**
+ * Unit tests of {@link ImportHandler} class.
+ */
 public class ImportHandlerTest {
 
+    /**
+     * Non-regression test for bug #7434.
+     */
     @Test
-    public void test7434() throws Exception {
-
+    public void testTicket7434() {
         final ImportHandler req = new ImportHandler();
         req.setUrl("http://localhost:8111/import?url=http://localhost:8888/relations?relations=19711&mode=recursive");
-        assertThat(req.args.get("url"), CoreMatchers.is("http://localhost:8888/relations?relations=19711&mode=recursive"));
+        assertEquals("http://localhost:8888/relations?relations=19711&mode=recursive", req.args.get("url"));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
index 611f776..d890b5b 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandlerTest.java
@@ -1,8 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.remotecontrol.handler;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -11,6 +10,9 @@ import java.util.Map;
 import org.junit.Test;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
 
+/**
+ * Unit tests of {@link RequestHandler} class.
+ */
 public class RequestHandlerTest {
 
     Map<String, String> getRequestParameter(String url) {
@@ -42,46 +44,56 @@ public class RequestHandlerTest {
         return req.args;
     }
 
+    /**
+     * Test request parameter - case 1
+     */
     @Test
     public void testRequestParameter1() {
         final Map<String, String> expected = new HashMap<>();
         expected.put("query", "a");
         expected.put("b", "=c");
-        assertThat(getRequestParameter("http://example.com/?query=a&b==c"),
-                is(expected));
+        assertEquals(expected, getRequestParameter("http://example.com/?query=a&b==c"));
     }
 
+    /**
+     * Test request parameter - case 2
+     */
     @Test
-    public void testRequestParameter12() {
-        assertThat(getRequestParameter("http://example.com/?query=a%26b==c"),
-                is(Collections.singletonMap("query", "a&b==c")));
+    public void testRequestParameter2() {
+        assertEquals(Collections.singletonMap("query", "a&b==c"),
+                getRequestParameter("http://example.com/?query=a%26b==c"));
     }
 
+    /**
+     * Test request parameter - case 3
+     */
     @Test
     public void testRequestParameter3() {
-        assertThat(getRequestParameter("http://example.com/blue+light%20blue?blue%2Blight+blue").keySet(),
-                is((Collections.singleton("blue+light blue"))));
+        assertEquals(Collections.singleton("blue+light blue"),
+                getRequestParameter("http://example.com/blue+light%20blue?blue%2Blight+blue").keySet());
     }
 
     /**
+     * Test request parameter - case 4
      * @see <a href="http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding">
      *      What every web developer must know about URL encoding</a>
      */
     @Test
     public void testRequestParameter4() {
-        assertThat(getRequestParameter(
+        assertEquals(Collections.singletonMap("/?:@-._~!$'()* ,;", "/?:@-._~!$'()* ,;=="), getRequestParameter(
                 // CHECKSTYLE.OFF: LineLength
-                "http://example.com/:@-._~!$&'()*+,=;:@-._~!$&'()*+,=:@-._~!$&'()*+,==?/?:@-._~!$'()*+,;=/?:@-._~!$'()*+,;==#/?:@-._~!$&'()*+,;="),
+                "http://example.com/:@-._~!$&'()*+,=;:@-._~!$&'()*+,=:@-._~!$&'()*+,==?/?:@-._~!$'()*+,;=/?:@-._~!$'()*+,;==#/?:@-._~!$&'()*+,;="));
                 // CHECKSTYLE.ON: LineLength
-                is(Collections.singletonMap("/?:@-._~!$'()* ,;", "/?:@-._~!$'()* ,;==")));
     }
 
+    /**
+     * Test request parameter - case 5
+     */
     @Test
     public void testRequestParameter5() {
         final Map<String, String> expected = new HashMap<>();
         expected.put("space", " ");
         expected.put("tab", "\t");
-        assertThat(getRequestParameter("http://example.com/?space=%20&tab=%09"),
-                is(expected));
+        assertEquals(expected, getRequestParameter("http://example.com/?space=%20&tab=%09"));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
index 4fcdef3..31d4d67 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
@@ -15,6 +15,7 @@ import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -111,4 +112,20 @@ public class SessionReaderTest {
         assertEquals(gpx.getName(), "GPX layer name");
         assertEquals(marker.getName(), "Marker layer name");
     }
+
+    /**
+     * Tests to read a .jos file containing Bing imagery.
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException is the test file is considered as invalid
+     */
+    @Test
+    public void testReadImage() throws IOException, IllegalDataException {
+        final List<Layer> layers = testRead("bing.jos");
+        assertSame(layers.size(), 1);
+        assertTrue(layers.get(0) instanceof ImageryLayer);
+        final ImageryLayer image = (ImageryLayer) layers.get(0);
+        assertEquals("Bing aerial imagery", image.getName());
+        assertEquals(image.getDx(), 12.34, 1e-9);
+        assertEquals(image.getDy(), -56.78, 1e-9);
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java b/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
index ed8ce04..e2a79e4 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
@@ -1,8 +1,11 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io.session;
 
+import static org.junit.Assert.fail;
+
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -14,21 +17,23 @@ import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Pair;
 
 /**
  * Unit tests for Session writing.
  */
 public class SessionWriterTest {
 
-    private static class OsmHeadlessJosExporter extends OsmDataSessionExporter {
+    protected static final class OsmHeadlessJosExporter extends OsmDataSessionExporter {
         public OsmHeadlessJosExporter(OsmDataLayer layer) {
             super(layer);
         }
@@ -39,7 +44,7 @@ public class SessionWriterTest {
         }
     }
 
-    private static class OsmHeadlessJozExporter extends OsmDataSessionExporter {
+    protected static final class OsmHeadlessJozExporter extends OsmDataSessionExporter {
         public OsmHeadlessJozExporter(OsmDataLayer layer) {
             super(layer);
         }
@@ -50,7 +55,7 @@ public class SessionWriterTest {
         }
     }
 
-    private static class GpxHeadlessJosExporter extends GpxTracksSessionExporter {
+    protected static final class GpxHeadlessJosExporter extends GpxTracksSessionExporter {
         public GpxHeadlessJosExporter(GpxLayer layer) {
             super(layer);
         }
@@ -61,7 +66,7 @@ public class SessionWriterTest {
         }
     }
 
-    private static class GpxHeadlessJozExporter extends GpxTracksSessionExporter {
+    protected static final class GpxHeadlessJozExporter extends GpxTracksSessionExporter {
         public GpxHeadlessJozExporter(GpxLayer layer) {
             super(layer);
         }
@@ -81,7 +86,7 @@ public class SessionWriterTest {
         ProjectionPreference.setProjection();
     }
 
-    private void testWrite(List<Layer> layers, final boolean zip) throws IOException {
+    private void testWrite(List<Layer> layers, final boolean zip) {
         Map<Layer, SessionLayerExporter> exporters = new HashMap<>();
         if (zip) {
             SessionWriter.registerSessionLayerExporter(OsmDataLayer.class, OsmHeadlessJozExporter.class);
@@ -97,6 +102,9 @@ public class SessionWriterTest {
         File file = new File(System.getProperty("java.io.tmpdir"), getClass().getName()+(zip ? ".joz" : ".jos"));
         try {
             sw.write(file);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail(e.getMessage());
         } finally {
             if (file.exists()) {
                 file.delete();
@@ -123,67 +131,75 @@ public class SessionWriterTest {
         return new MarkerLayer(gpx.data, "Marker layer name", gpx.getAssociatedFile(), gpx);
     }
 
+    private ImageryLayer createImageryLayer() {
+        ImageryLayer layer = new TMSLayer(new ImageryInfo("the name", "http://www.url.com/"));
+        layer.setOffset(12, 34);
+        return layer;
+    }
+
     /**
      * Tests to write an empty .jos file.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteEmptyJos() throws IOException {
+    public void testWriteEmptyJos() {
         testWrite(Collections.<Layer>emptyList(), false);
     }
 
     /**
      * Tests to write an empty .joz file.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteEmptyJoz() throws IOException {
+    public void testWriteEmptyJoz() {
         testWrite(Collections.<Layer>emptyList(), true);
     }
 
     /**
      * Tests to write a .jos file containing OSM data.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteOsmJos() throws IOException {
+    public void testWriteOsmJos() {
         testWrite(Collections.<Layer>singletonList(createOsmLayer()), false);
     }
 
     /**
      * Tests to write a .joz file containing OSM data.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteOsmJoz() throws IOException {
+    public void testWriteOsmJoz() {
         testWrite(Collections.<Layer>singletonList(createOsmLayer()), true);
     }
 
     /**
      * Tests to write a .jos file containing GPX data.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteGpxJos() throws IOException {
+    public void testWriteGpxJos() {
         testWrite(Collections.<Layer>singletonList(createGpxLayer()), false);
     }
 
     /**
      * Tests to write a .joz file containing GPX data.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteGpxJoz() throws IOException {
+    public void testWriteGpxJoz() {
         testWrite(Collections.<Layer>singletonList(createGpxLayer()), true);
     }
 
     /**
      * Tests to write a .joz file containing GPX and marker data.
-     * @throws IOException if any I/O error occurs
      */
     @Test
-    public void testWriteGpxAndMarkerJoz() throws IOException {
+    public void testWriteGpxAndMarkerJoz() {
         GpxLayer gpx = createGpxLayer();
-        testWrite(Pair.toList(new Pair<Layer, Layer>(gpx, createMarkerLayer(gpx))), true);
+        testWrite(Arrays.asList(gpx, createMarkerLayer(gpx)), true);
+    }
+
+    /**
+     * Tests to write a .joz file containing an imagery layer.
+     */
+    @Test
+    public void testWriteImageryLayer() {
+        final Layer layer = createImageryLayer();
+        testWrite(Collections.singletonList(layer), true);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
new file mode 100644
index 0000000..9486e59
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
@@ -0,0 +1,74 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+
+/**
+ * Unit tests of {@link PluginHandler} class.
+ */
+public class PluginHandlerTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUp() {
+        JOSMFixture.createUnitTestFixture().init(true);
+    }
+
+    /**
+     * Test that available plugins rules can be loaded.
+     */
+    @Test
+    public void testValidityOfAvailablePlugins() {
+        // Download complete list of plugins
+        ReadRemotePluginInformationTask pluginInfoDownloadTask = new ReadRemotePluginInformationTask(
+                Main.pref.getOnlinePluginSites());
+        pluginInfoDownloadTask.run();
+        List<PluginInformation> plugins = pluginInfoDownloadTask.getAvailablePlugins();
+        System.out.println("Original plugin list contains " + plugins.size() + " plugins");
+        assertFalse(plugins.isEmpty());
+        PluginInformation info = plugins.get(0);
+        assertFalse(info.getName().isEmpty());
+        assertFalse(info.getClass().getName().isEmpty());
+
+        // Filter deprecated and unmaintained ones
+        Set<String> deprecatedPlugins = PluginHandler.getDeprecatedAndUnmaintainedPlugins();
+        for (Iterator<PluginInformation> it = plugins.iterator(); it.hasNext();) {
+            PluginInformation pi = it.next();
+            if (deprecatedPlugins.contains(pi.name)) {
+                it.remove();
+            }
+        }
+        System.out.println("Filtered plugin list contains " + plugins.size() + " plugins");
+
+        // Update the locally installed plugins
+        PluginDownloadTask pluginDownloadTask = new PluginDownloadTask(NullProgressMonitor.INSTANCE, plugins, null);
+        pluginDownloadTask.run();
+        assertTrue(pluginDownloadTask.getFailedPlugins().toString(), pluginDownloadTask.getFailedPlugins().isEmpty());
+        assertEquals(plugins.size(), pluginDownloadTask.getDownloadedPlugins().size());
+
+        // Update Plugin info for downloaded plugins
+        PluginHandler.refreshLocalUpdatedPluginInfo(pluginDownloadTask.getDownloadedPlugins());
+
+        // Load early plugins
+        PluginHandler.loadEarlyPlugins(null, plugins, null);
+
+        // Load late plugins
+        PluginHandler.loadLatePlugins(null, plugins, null);
+
+        assertTrue(PluginHandler.pluginLoadingExceptions.toString(), PluginHandler.pluginLoadingExceptions.isEmpty());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
index 7731f8c..7220add 100644
--- a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
@@ -20,6 +20,9 @@ public class GeometryTest {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    /**
+     * Test of {@link Geometry#getLineLineIntersection} method.
+     */
     @Test
     public void testLineLineIntersection() {
         EastNorth p1 = new EastNorth(-9477809.106349014, 1.5392960539974203E7);
diff --git a/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java b/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
index a652c41..8339856 100644
--- a/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
@@ -1,10 +1,11 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 import java.awt.Transparency;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 
@@ -23,10 +24,10 @@ public class ImageProviderTest {
     @Test
     public void testTicket9984() throws IOException {
         File file = new File(TestUtils.getRegressionDataFile(9984, "tile.png"));
-        assertThat(ImageProvider.read(file, true, true).getTransparency(), is(Transparency.TRANSLUCENT));
-        assertThat(ImageProvider.read(file, false, true).getTransparency(), is(Transparency.TRANSLUCENT));
-        assertThat(ImageProvider.read(file, false, false).getTransparency(), is(Transparency.OPAQUE));
-        assertThat(ImageProvider.read(file, true, false).getTransparency(), is(Transparency.OPAQUE));
+        assertEquals(Transparency.TRANSLUCENT, ImageProvider.read(file, true, true).getTransparency());
+        assertEquals(Transparency.TRANSLUCENT, ImageProvider.read(file, false, true).getTransparency());
+        assertEquals(Transparency.OPAQUE, ImageProvider.read(file, false, false).getTransparency());
+        assertEquals(Transparency.OPAQUE, ImageProvider.read(file, true, false).getTransparency());
     }
 
     /**
@@ -36,6 +37,7 @@ public class ImageProviderTest {
     @Test
     public void testTicket10030() throws IOException {
         File file = new File(TestUtils.getRegressionDataFile(10030, "tile.jpg"));
-        ImageProvider.read(file, true, true);
+        BufferedImage img = ImageProvider.read(file, true, true);
+        assertNotNull(img);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
index 88e9540..ce7de70 100644
--- a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
@@ -54,7 +54,7 @@ public class OsmUrlToBoundsTest {
         public String url;
         public Bounds bounds;
 
-        public ParseTestItem(String url, Bounds bounds) {
+        ParseTestItem(String url, Bounds bounds) {
             this.url = url;
             this.bounds = bounds;
         }
@@ -78,5 +78,4 @@ public class OsmUrlToBoundsTest {
             Assert.assertEquals(item.url, item.bounds, bounds);
         }
     }
-
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java b/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java
index 7b6af54..2595513 100644
--- a/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java
@@ -1,13 +1,15 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 
+/**
+ * Unit tests of {@link OverpassTurboQueryWizard} class.
+ */
 public class OverpassTurboQueryWizardTest {
 
     /**
@@ -19,10 +21,13 @@ public class OverpassTurboQueryWizardTest {
         OverpassTurboQueryWizard.getInstance();
     }
 
+    /**
+     * Test key=value.
+     */
     @Test
-    public void testKeyValue() throws Exception {
+    public void testKeyValue() {
         final String query = OverpassTurboQueryWizard.getInstance().constructQuery("amenity=drinking_water");
-        assertThat(query, is("" +
+        assertEquals("" +
                 "[timeout:25];\n" +
                 "// gather results\n" +
                 "(\n" +
@@ -34,11 +39,14 @@ public class OverpassTurboQueryWizardTest {
                 "// print results\n" +
                 "out meta;\n" +
                 ">;\n" +
-                "out meta;"));
+                "out meta;", query);
     }
 
+    /**
+     * Test erroneous value.
+     */
     @Test(expected = OverpassTurboQueryWizard.ParseException.class)
-    public void testErroneous() throws Exception {
+    public void testErroneous() {
         OverpassTurboQueryWizard.getInstance().constructQuery("foo");
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java b/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
index 47a1f2c..35b0cc0 100644
--- a/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
@@ -10,6 +10,9 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 
+/**
+ * Unit tests of {@link TextTagParser} class.
+ */
 public class TextTagParserTest {
 
     /**
@@ -20,6 +23,9 @@ public class TextTagParserTest {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    /**
+     * Test of {@link TextTagParser#unescape} method.
+     */
     @Test
     public void testUnescape() {
         String s, s1;
@@ -36,6 +42,9 @@ public class TextTagParserTest {
         Assert.assertEquals(s1, TextTagParser.unescape(s));
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method with tabs and new lines.
+     */
     @Test
     public void testTNformat() {
         String txt = "   a  \t  1   \n\n\n  b\t2 \n c \t the value with \"quotes\"";
@@ -46,6 +55,9 @@ public class TextTagParserTest {
         Assert.assertEquals(correctTags, tags);
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method with quotes.
+     */
     @Test
     public void testEQformat() {
         String txt = "key1=value key2=\"long value\" tag3=\"hotel \\\"Quote\\\"\"";
@@ -57,6 +69,9 @@ public class TextTagParserTest {
         Assert.assertEquals(correctTags, tags);
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method with JSON.
+     */
     @Test
     public void testJSONformat() {
         String txt;
@@ -77,6 +92,9 @@ public class TextTagParserTest {
         Assert.assertEquals(correctTags, tags);
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method with free format.
+     */
     @Test
     public void testFreeformat() {
         String txt = "a 1 b=2 c=\"hello === \\\"\\\"world\"";
@@ -87,16 +105,21 @@ public class TextTagParserTest {
         Assert.assertEquals(correctTags, tags);
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method (error detection).
+     */
     @Test
     public void errorDetect() {
         String txt = "a=2 b=3 4";
         Map<String, String> tags = TextTagParser.readTagsFromText(txt);
         Assert.assertEquals(Collections.EMPTY_MAP, tags);
-
     }
 
+    /**
+     * Test of {@link TextTagParser#readTagsFromText} method with tabs.
+     */
     @Test
-    public void testTab() throws Exception {
+    public void testTab() {
         Assert.assertEquals(TextTagParser.readTagsFromText("shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
         Assert.assertEquals(TextTagParser.readTagsFromText("!shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
         Assert.assertEquals(TextTagParser.readTagsFromText("!!!shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
diff --git a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
index eba4de6..ec356b5 100644
--- a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
@@ -1,8 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -108,11 +107,11 @@ public class UtilsTest {
      */
     @Test
     public void testPositionListString() {
-        assertThat(Utils.getPositionListString(Arrays.asList(1)), is("1"));
-        assertThat(Utils.getPositionListString(Arrays.asList(1, 2, 3)), is("1-3"));
-        assertThat(Utils.getPositionListString(Arrays.asList(3, 1, 2)), is("1-3"));
-        assertThat(Utils.getPositionListString(Arrays.asList(1, 2, 3, 6, 7, 8)), is("1-3,6-8"));
-        assertThat(Utils.getPositionListString(Arrays.asList(1, 5, 2, 6, 7)), is("1-2,5-7"));
+        assertEquals("1", Utils.getPositionListString(Arrays.asList(1)));
+        assertEquals("1-3", Utils.getPositionListString(Arrays.asList(1, 2, 3)));
+        assertEquals("1-3", Utils.getPositionListString(Arrays.asList(3, 1, 2)));
+        assertEquals("1-3,6-8", Utils.getPositionListString(Arrays.asList(1, 2, 3, 6, 7, 8)));
+        assertEquals("1-2,5-7", Utils.getPositionListString(Arrays.asList(1, 5, 2, 6, 7)));
     }
 
     /**
@@ -121,24 +120,30 @@ public class UtilsTest {
     @Test
     public void testDurationString() {
         I18n.set("en");
-        assertThat(Utils.getDurationString(123), is("123 ms"));
-        assertThat(Utils.getDurationString(1234), is("1.2 s"));
-        assertThat(Utils.getDurationString(57 * 1000), is("57.0 s"));
-        assertThat(Utils.getDurationString(507 * 1000), is("8 min 27 s"));
-        assertThat(Utils.getDurationString((long) (8.4 * 60 * 60 * 1000)), is("8 h 24 min"));
-        assertThat(Utils.getDurationString((long) (1.5 * 24 * 60 * 60 * 1000)), is("1 day 12 h"));
-        assertThat(Utils.getDurationString((long) (8.5 * 24 * 60 * 60 * 1000)), is("8 days 12 h"));
+        assertEquals("123 ms", Utils.getDurationString(123));
+        assertEquals("1.2 s", Utils.getDurationString(1234));
+        assertEquals("57.0 s", Utils.getDurationString(57 * 1000));
+        assertEquals("8 min 27 s", Utils.getDurationString(507 * 1000));
+        assertEquals("8 h 24 min", Utils.getDurationString((long) (8.4 * 60 * 60 * 1000)));
+        assertEquals("1 day 12 h", Utils.getDurationString((long) (1.5 * 24 * 60 * 60 * 1000)));
+        assertEquals("8 days 12 h", Utils.getDurationString((long) (8.5 * 24 * 60 * 60 * 1000)));
     }
 
+    /**
+     * Test of {@link Utils#escapeReservedCharactersHTML} method.
+     */
     @Test
-    public void testEscapeReservedCharactersHTML() throws Exception {
-        assertThat(Utils.escapeReservedCharactersHTML("foo -> bar -> '&'"), is("foo -> bar -> '&'"));
+    public void testEscapeReservedCharactersHTML() {
+        assertEquals("foo -> bar -> '&'", Utils.escapeReservedCharactersHTML("foo -> bar -> '&'"));
     }
 
+    /**
+     * Test of {@link Utils#restrictStringLines} method.
+     */
     @Test
-    public void testRestrictStringLines() throws Exception {
-        assertThat(Utils.restrictStringLines("1\n2\n3", 2), is("1\n..."));
-        assertThat(Utils.restrictStringLines("1\n2\n3", 3), is("1\n2\n3"));
-        assertThat(Utils.restrictStringLines("1\n2\n3", 4), is("1\n2\n3"));
+    public void testRestrictStringLines() {
+        assertEquals("1\n...", Utils.restrictStringLines("1\n2\n3", 2));
+        assertEquals("1\n2\n3", Utils.restrictStringLines("1\n2\n3", 3));
+        assertEquals("1\n2\n3", Utils.restrictStringLines("1\n2\n3", 4));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java b/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
index 91a703b..7ccd7a1 100644
--- a/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
@@ -1,20 +1,28 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools.date;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 
+/**
+ * Unit tests of {@link DateUtils} class.
+ */
 public class DateUtilsTest {
-    @Test
-    public void testMapDate() throws Exception {
-        assertThat(DateUtils.fromString("2012-08-13T15:10:37Z").getTime(), is(1344870637000L));
 
+    /**
+     * Test to parse date as returned for map data.
+     */
+    @Test
+    public void testMapDate() {
+        assertEquals(1344870637000L, DateUtils.fromString("2012-08-13T15:10:37Z").getTime());
     }
 
+    /**
+     * Test to parse date as returned for note data.
+     */
     @Test
-    public void testNoteDate() throws Exception {
-        assertThat(DateUtils.fromString("2014-11-29 22:08:50 UTC").getTime(), is(1417298930000L));
+    public void testNoteDate() {
+        assertEquals(1417298930000L, DateUtils.fromString("2014-11-29 22:08:50 UTC").getTime());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateEngineTest.java b/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateEngineTest.java
index ac83552..f42c7bc 100644
--- a/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateEngineTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/template_engine/TemplateEngineTest.java
@@ -16,6 +16,9 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.unitils.reflectionassert.ReflectionAssert;
 
+/**
+ * Unit tests of {@link TemplateParser} class.
+ */
 public class TemplateEngineTest {
 
     /**
@@ -26,12 +29,20 @@ public class TemplateEngineTest {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    /**
+     * Test to parse an empty string.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
     public void testEmpty() throws ParseError {
         TemplateParser parser = new TemplateParser("");
         ReflectionAssert.assertReflectionEquals(new StaticText(""), parser.parse());
     }
 
+    /**
+     * Test to parse a variable.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
     public void testVariable() throws ParseError {
         TemplateParser parser = new TemplateParser("abc{var}\\{ef\\$\\{g");
@@ -39,6 +50,10 @@ public class TemplateEngineTest {
                 new Variable("var"), new StaticText("{ef${g")), parser.parse());
     }
 
+    /**
+     * Test to parse a condition with whitespaces.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
     public void testConditionWhitespace() throws ParseError {
         TemplateParser parser = new TemplateParser("?{ '{name} {desc}' | '{name}' | '{desc}'    }");
@@ -49,6 +64,10 @@ public class TemplateEngineTest {
         ReflectionAssert.assertReflectionEquals(condition, parser.parse());
     }
 
+    /**
+     * Test to parse a condition without whitespace.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
     public void testConditionNoWhitespace() throws ParseError {
         TemplateParser parser = new TemplateParser("?{'{name} {desc}'|'{name}'|'{desc}'}");
@@ -59,12 +78,17 @@ public class TemplateEngineTest {
         ReflectionAssert.assertReflectionEquals(condition, parser.parse());
     }
 
-    private static Match compile(String expression) throws org.openstreetmap.josm.actions.search.SearchCompiler.ParseError {
-        return SearchCompiler.compile(expression, false, false);
+    private static Match compile(String expression) throws SearchCompiler.ParseError {
+        return SearchCompiler.compile(expression);
     }
 
+    /**
+     * Test to parse a search expression condition.
+     * @throws ParseError if the template cannot be parsed
+     * @throws SearchCompiler.ParseError if an error has been encountered while compiling
+     */
     @Test
-    public void testConditionSearchExpression() throws Exception {
+    public void testConditionSearchExpression() throws ParseError, SearchCompiler.ParseError {
         TemplateParser parser = new TemplateParser("?{ admin_level = 2 'NUTS 1' | admin_level = 4 'NUTS 2' |  '{admin_level}'}");
         Condition condition = new Condition();
         condition.getEntries().add(new SearchExpressionCondition(compile("admin_level = 2"), new StaticText("NUTS 1")));
@@ -104,8 +128,12 @@ public class TemplateEngineTest {
         }
     };
 
+    /**
+     * Test to fill a template.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testFilling() throws Exception {
+    public void testFilling() throws ParseError {
         TemplateParser parser = new TemplateParser("{name} u{unknown}u i{number}i");
         TemplateEntry entry = parser.parse();
         StringBuilder sb = new StringBuilder();
@@ -113,8 +141,12 @@ public class TemplateEngineTest {
         Assert.assertEquals("waypointName uu i10i", sb.toString());
     }
 
+    /**
+     * Test to parse a search expression.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testFillingSearchExpression() throws Exception {
+    public void testFillingSearchExpression() throws ParseError {
         TemplateParser parser = new TemplateParser("?{ admin_level = 2 'NUTS 1' | admin_level = 4 'NUTS 2' |  '{admin_level}'}");
         TemplateEntry templateEntry = parser.parse();
 
@@ -130,8 +162,12 @@ public class TemplateEngineTest {
         Assert.assertEquals("5", sb.toString());
     }
 
+    /**
+     * Test to print all.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testPrintAll() throws Exception {
+    public void testPrintAll() throws ParseError {
         TemplateParser parser = new TemplateParser("{special:everything}");
         TemplateEntry entry = parser.parse();
         StringBuilder sb = new StringBuilder();
@@ -139,8 +175,12 @@ public class TemplateEngineTest {
         Assert.assertEquals("name=waypointName, number=10", sb.toString());
     }
 
+    /**
+     * Test to print on several lines.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testPrintMultiline() throws Exception {
+    public void testPrintMultiline() throws ParseError {
         TemplateParser parser = new TemplateParser("{name}\\n{number}");
         TemplateEntry entry = parser.parse();
         StringBuilder sb = new StringBuilder();
@@ -148,8 +188,12 @@ public class TemplateEngineTest {
         Assert.assertEquals("waypointName\n10", sb.toString());
     }
 
+    /**
+     * Test to print special variables.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testSpecialVariable() throws Exception {
+    public void testSpecialVariable() throws ParseError {
         TemplateParser parser = new TemplateParser("{name}u{special:localName}u{special:special:key}");
         TemplateEntry templateEntry = parser.parse();
 
@@ -165,8 +209,12 @@ public class TemplateEngineTest {
         //TODO
     }
 
+    /**
+     * Test to switch context.
+     * @throws ParseError if the template cannot be parsed
+     */
     @Test
-    public void testSwitchContext() throws Exception {
+    public void testSwitchContext() throws ParseError {
         TemplateParser parser = new TemplateParser("!{parent() type=parent2 '{name}'}");
         DatasetFactory ds = new DatasetFactory();
         Relation parent1 = ds.addRelation(1);
@@ -205,7 +253,6 @@ public class TemplateEngineTest {
         parent1.addMember(new RelationMember("", child2));
         parent2.addMember(new RelationMember("", child2));
 
-
         StringBuilder sb = new StringBuilder();
         TemplateEntry entry = parser.parse();
         entry.appendText(sb, child1);
@@ -285,5 +332,4 @@ public class TemplateEngineTest {
 
         Assert.assertEquals("child2", sb.toString());
     }
-
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/josm.git



More information about the Pkg-grass-devel mailing list